services: frontend: build: context: . dockerfile: Dockerfile.frontend args: DOCKER_REGISTRY_PREFIX: ${DOCKER_REGISTRY_PREFIX:-} cache_from: - type=local,src=./docker-data/build-cache/frontend cache_to: - type=local,dest=./docker-data/build-cache/frontend,mode=max depends_on: api: condition: service_started restart: unless-stopped ports: - "8080:80" healthcheck: test: ["CMD-SHELL", "wget -q -O /dev/null http://127.0.0.1/ || exit 1"] interval: 30s timeout: 5s retries: 3 postgres: image: ${DOCKER_REGISTRY_PREFIX:-}postgres:16-alpine restart: unless-stopped environment: POSTGRES_DB: ${POSTGRES_DB:-llm_in_text} POSTGRES_USER: ${POSTGRES_USER:-llm_in_text} POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-llm_in_text_change_me} volumes: - ./docker-data/postgres:/var/lib/postgresql/data healthcheck: test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER:-llm_in_text} -d ${POSTGRES_DB:-llm_in_text}"] interval: 15s timeout: 5s retries: 5 redis: image: ${DOCKER_REGISTRY_PREFIX:-}redis:7-alpine restart: unless-stopped command: ["redis-server", "--appendonly", "yes"] volumes: - ./docker-data/redis:/data healthcheck: test: ["CMD", "redis-cli", "ping"] interval: 15s timeout: 5s retries: 5 searxng: image: ${DOCKER_REGISTRY_PREFIX:-}searxng/searxng:latest restart: unless-stopped environment: BASE_URL: http://searxng:8080/ INSTANCE_NAME: llm-in-text-search volumes: - ./docker-data/searxng:/etc/searxng firecrawl-postgres: image: ${DOCKER_REGISTRY_PREFIX:-}postgres:16-alpine restart: unless-stopped environment: POSTGRES_DB: firecrawl POSTGRES_USER: firecrawl POSTGRES_PASSWORD: firecrawl volumes: - ./docker-data/firecrawl-postgres:/var/lib/postgresql/data firecrawl-rabbitmq: image: ${DOCKER_REGISTRY_PREFIX:-}rabbitmq:3-management-alpine restart: unless-stopped volumes: - ./docker-data/firecrawl-rabbitmq:/var/lib/rabbitmq firecrawl-playwright: image: ghcr.io/firecrawl/playwright-service:latest restart: unless-stopped environment: PORT: 3000 firecrawl: image: ghcr.io/firecrawl/firecrawl:latest restart: unless-stopped environment: HOST: 0.0.0.0 PORT: 3002 POSTGRES_HOST: firecrawl-postgres POSTGRES_PORT: 5432 POSTGRES_DB: firecrawl POSTGRES_USER: firecrawl POSTGRES_PASSWORD: firecrawl REDIS_URL: redis://redis:6379/1 REDIS_RATE_LIMIT_URL: redis://redis:6379/1 NUQ_RABBITMQ_URL: amqp://guest:guest@firecrawl-rabbitmq:5672/ PLAYWRIGHT_MICROSERVICE_URL: http://firecrawl-playwright:3000/scrape SEARXNG_ENDPOINT: http://searxng:8080 USE_DB_AUTHENTICATION: "false" FIRECRAWL_API_KEY: ${FIRECRAWL_API_KEY:-change-me} depends_on: - redis - firecrawl-postgres - firecrawl-rabbitmq - firecrawl-playwright api: build: context: . dockerfile: backend/Dockerfile args: DOCKER_REGISTRY_PREFIX: ${DOCKER_REGISTRY_PREFIX:-} cache_from: - type=local,src=./docker-data/build-cache/api cache_to: - type=local,dest=./docker-data/build-cache/api,mode=max env_file: - backend/.env environment: JOB_BACKEND: redis REDIS_URL: redis://redis:6379/0 DATABASE_URL: ${DATABASE_URL:-postgresql://llm_in_text:llm_in_text_change_me@postgres:5432/llm_in_text} DOCS_BACKEND: postgres JOB_SHARED_TEMP_DIR: /shared-jobs SEARXNG_BASE_URL: http://searxng:8080 FIRECRAWL_BASE_URL: http://firecrawl:3002 restart: unless-stopped init: true extra_hosts: - "host.docker.internal:host-gateway" depends_on: postgres: condition: service_healthy redis: condition: service_healthy searxng: condition: service_started firecrawl: condition: service_started ports: - "8001:8001" volumes: - ./docker-data/jobs:/shared-jobs healthcheck: test: ["CMD", "python", "-c", "import urllib.request; urllib.request.urlopen('http://127.0.0.1:8001/v1/tts-asr/status', timeout=5)"] interval: 30s timeout: 10s retries: 5 start_period: 20s worker: build: context: . dockerfile: backend/Dockerfile args: DOCKER_REGISTRY_PREFIX: ${DOCKER_REGISTRY_PREFIX:-} cache_from: - type=local,src=./docker-data/build-cache/worker cache_to: - type=local,dest=./docker-data/build-cache/worker,mode=max command: ["python", "worker.py"] env_file: - backend/.env environment: JOB_BACKEND: redis REDIS_URL: redis://redis:6379/0 DATABASE_URL: ${DATABASE_URL:-postgresql://llm_in_text:llm_in_text_change_me@postgres:5432/llm_in_text} DOCS_BACKEND: postgres JOB_SHARED_TEMP_DIR: /shared-jobs SEARXNG_BASE_URL: http://searxng:8080 FIRECRAWL_BASE_URL: http://firecrawl:3002 restart: unless-stopped init: true extra_hosts: - "host.docker.internal:host-gateway" depends_on: postgres: condition: service_healthy redis: condition: service_healthy searxng: condition: service_started firecrawl: condition: service_started volumes: - ./docker-data/jobs:/shared-jobs