services:
  crawler:
    build:
      context: .
      dockerfile: Dockerfile
    container_name: crawler
    hostname: crawler.prototype.prolicht.digital
    restart: unless-stopped
    env_file:
      - .env
    ports:
      - "8114:8114"
    shm_size: "2gb"
    volumes:
      - ./app:/crawler/app
      - ./data/sites_crawled:/crawler/sites_crawled
      - ./data/chrome_profile:/crawler/chrome_profile
      - ./data/logs:/crawler/logs
      - ./data/downloads:/crawler/downloads
    environment:
      HOSTNAME: "crawler.prototype.prolicht.digital"
      CRAWLER_HOST: "0.0.0.0"
      CRAWLER_PORT: "8114"
      CRAWLER_DOCKER: "true"
      CRAWLER_OUT: "/crawler/sites_crawled"
      CRAWLER_PUBLIC_BASE_URL: "https://crawler.prototype.prolicht.digital"
      CRAWLER_FILE_SECRET: "crawler-file-signing-key-2026"
      CRAWLER_FILE_TTL_SECONDS: "1800"
      CRAWLER_DB_HOST: "mariadb"
      CRAWLER_DB_PORT: "3306"
      CRAWLER_DB_USER: "crawler"
      CRAWLER_DB_PASS: "crawler-secret"
      CRAWLER_DB_NAME: "crawler_cache"
    depends_on:
      - mariadb

  mcp-research:
    build:
      context: .
      dockerfile: Dockerfile.mcp
    container_name: crawler-mcp
    restart: unless-stopped
    env_file:
      - .env
    depends_on:
      - crawler
    ports:
      - "8115:8115"
    volumes:
      - ./app-mcp:/crawler-mcp/app-mcp
    environment:
      MCP_HOST: "0.0.0.0"
      MCP_PORT: "8115"
      HOSTNAME_CRAWLER_MCP: "https://crawlermcp.prototype.prolicht.digital/mcp"
      CRAWLER_API_BASE_URL: "http://crawler:8114"
      SERPER_API_KEY: "${SERPER_API_KEY}"
      DEEPSEEK_API_KEY: "${DEEPSEEK_API_KEY}"
      DEEPSEEK_MODEL: "${DEEPSEEK_MODEL:-deepseek-chat}"

  mariadb:
    image: mariadb:11
    container_name: crawler-db
    restart: unless-stopped
    environment:
      MARIADB_ROOT_PASSWORD: "root-secret"
      MARIADB_DATABASE: "crawler_cache"
      MARIADB_USER: "crawler"
      MARIADB_PASSWORD: "crawler-secret"
    ports:
      - "3306:3306"
    volumes:
      - ./data/db:/var/lib/mysql
