2026-06-06 15:44:00 +08:00
|
|
|
services:
|
2026-06-06 17:18:15 +08:00
|
|
|
frontend:
|
|
|
|
|
build:
|
|
|
|
|
context: .
|
|
|
|
|
dockerfile: Dockerfile.frontend
|
|
|
|
|
args:
|
|
|
|
|
DOCKER_REGISTRY_PREFIX: ${DOCKER_REGISTRY_PREFIX:-}
|
2026-06-27 22:22:42 +08:00
|
|
|
cache_from:
|
|
|
|
|
- type=local,src=./docker-data/build-cache/frontend
|
|
|
|
|
cache_to:
|
|
|
|
|
- type=local,dest=./docker-data/build-cache/frontend,mode=max
|
2026-06-06 17:18:15 +08:00
|
|
|
depends_on:
|
2026-06-27 22:22:42 +08:00
|
|
|
api:
|
|
|
|
|
condition: service_started
|
|
|
|
|
restart: unless-stopped
|
2026-06-06 15:44:00 +08:00
|
|
|
ports:
|
2026-06-06 17:18:15 +08:00
|
|
|
- "8080:80"
|
2026-06-27 22:22:42 +08:00
|
|
|
healthcheck:
|
|
|
|
|
test: ["CMD-SHELL", "wget -q -O /dev/null http://127.0.0.1/ || exit 1"]
|
|
|
|
|
interval: 30s
|
|
|
|
|
timeout: 5s
|
|
|
|
|
retries: 3
|
2026-06-06 17:18:15 +08:00
|
|
|
|
|
|
|
|
postgres:
|
|
|
|
|
image: ${DOCKER_REGISTRY_PREFIX:-}postgres:16-alpine
|
2026-06-27 22:22:42 +08:00
|
|
|
restart: unless-stopped
|
2026-06-06 17:18:15 +08:00
|
|
|
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
|
2026-06-27 22:22:42 +08:00
|
|
|
healthcheck:
|
|
|
|
|
test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER:-llm_in_text} -d ${POSTGRES_DB:-llm_in_text}"]
|
|
|
|
|
interval: 15s
|
|
|
|
|
timeout: 5s
|
|
|
|
|
retries: 5
|
2026-06-06 17:18:15 +08:00
|
|
|
|
|
|
|
|
redis:
|
|
|
|
|
image: ${DOCKER_REGISTRY_PREFIX:-}redis:7-alpine
|
2026-06-27 22:22:42 +08:00
|
|
|
restart: unless-stopped
|
2026-06-06 15:44:00 +08:00
|
|
|
command: ["redis-server", "--appendonly", "yes"]
|
|
|
|
|
volumes:
|
2026-06-06 17:18:15 +08:00
|
|
|
- ./docker-data/redis:/data
|
2026-06-27 22:22:42 +08:00
|
|
|
healthcheck:
|
|
|
|
|
test: ["CMD", "redis-cli", "ping"]
|
|
|
|
|
interval: 15s
|
|
|
|
|
timeout: 5s
|
|
|
|
|
retries: 5
|
2026-06-06 15:44:00 +08:00
|
|
|
|
2026-06-09 19:18:14 +08:00
|
|
|
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
|
|
|
|
|
|
2026-06-06 15:44:00 +08:00
|
|
|
api:
|
2026-06-06 17:18:15 +08:00
|
|
|
build:
|
|
|
|
|
context: .
|
|
|
|
|
dockerfile: backend/Dockerfile
|
|
|
|
|
args:
|
|
|
|
|
DOCKER_REGISTRY_PREFIX: ${DOCKER_REGISTRY_PREFIX:-}
|
2026-06-27 22:22:42 +08:00
|
|
|
cache_from:
|
|
|
|
|
- type=local,src=./docker-data/build-cache/api
|
|
|
|
|
cache_to:
|
|
|
|
|
- type=local,dest=./docker-data/build-cache/api,mode=max
|
2026-06-06 15:44:00 +08:00
|
|
|
env_file:
|
|
|
|
|
- backend/.env
|
|
|
|
|
environment:
|
|
|
|
|
JOB_BACKEND: redis
|
|
|
|
|
REDIS_URL: redis://redis:6379/0
|
2026-06-06 17:18:15 +08:00
|
|
|
DATABASE_URL: ${DATABASE_URL:-postgresql://llm_in_text:llm_in_text_change_me@postgres:5432/llm_in_text}
|
|
|
|
|
DOCS_BACKEND: postgres
|
2026-06-06 15:44:00 +08:00
|
|
|
JOB_SHARED_TEMP_DIR: /shared-jobs
|
2026-06-09 19:18:14 +08:00
|
|
|
SEARXNG_BASE_URL: http://searxng:8080
|
|
|
|
|
FIRECRAWL_BASE_URL: http://firecrawl:3002
|
2026-06-27 22:22:42 +08:00
|
|
|
restart: unless-stopped
|
|
|
|
|
init: true
|
|
|
|
|
extra_hosts:
|
|
|
|
|
- "host.docker.internal:host-gateway"
|
2026-06-06 15:44:00 +08:00
|
|
|
depends_on:
|
2026-06-27 22:22:42 +08:00
|
|
|
postgres:
|
|
|
|
|
condition: service_healthy
|
|
|
|
|
redis:
|
|
|
|
|
condition: service_healthy
|
|
|
|
|
searxng:
|
|
|
|
|
condition: service_started
|
|
|
|
|
firecrawl:
|
|
|
|
|
condition: service_started
|
2026-06-08 11:51:39 +08:00
|
|
|
ports:
|
|
|
|
|
- "8001:8001"
|
2026-06-06 17:18:15 +08:00
|
|
|
volumes:
|
|
|
|
|
- ./docker-data/jobs:/shared-jobs
|
2026-06-27 22:22:42 +08:00
|
|
|
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
|
2026-06-06 15:44:00 +08:00
|
|
|
|
|
|
|
|
worker:
|
2026-06-06 17:18:15 +08:00
|
|
|
build:
|
|
|
|
|
context: .
|
|
|
|
|
dockerfile: backend/Dockerfile
|
|
|
|
|
args:
|
|
|
|
|
DOCKER_REGISTRY_PREFIX: ${DOCKER_REGISTRY_PREFIX:-}
|
2026-06-27 22:22:42 +08:00
|
|
|
cache_from:
|
|
|
|
|
- type=local,src=./docker-data/build-cache/worker
|
|
|
|
|
cache_to:
|
|
|
|
|
- type=local,dest=./docker-data/build-cache/worker,mode=max
|
2026-06-06 17:18:15 +08:00
|
|
|
command: ["python", "worker.py"]
|
2026-06-06 15:44:00 +08:00
|
|
|
env_file:
|
|
|
|
|
- backend/.env
|
|
|
|
|
environment:
|
|
|
|
|
JOB_BACKEND: redis
|
|
|
|
|
REDIS_URL: redis://redis:6379/0
|
2026-06-06 17:18:15 +08:00
|
|
|
DATABASE_URL: ${DATABASE_URL:-postgresql://llm_in_text:llm_in_text_change_me@postgres:5432/llm_in_text}
|
|
|
|
|
DOCS_BACKEND: postgres
|
2026-06-06 15:44:00 +08:00
|
|
|
JOB_SHARED_TEMP_DIR: /shared-jobs
|
2026-06-09 19:18:14 +08:00
|
|
|
SEARXNG_BASE_URL: http://searxng:8080
|
|
|
|
|
FIRECRAWL_BASE_URL: http://firecrawl:3002
|
2026-06-27 22:22:42 +08:00
|
|
|
restart: unless-stopped
|
|
|
|
|
init: true
|
|
|
|
|
extra_hosts:
|
|
|
|
|
- "host.docker.internal:host-gateway"
|
2026-06-06 15:44:00 +08:00
|
|
|
depends_on:
|
2026-06-27 22:22:42 +08:00
|
|
|
postgres:
|
|
|
|
|
condition: service_healthy
|
|
|
|
|
redis:
|
|
|
|
|
condition: service_healthy
|
|
|
|
|
searxng:
|
|
|
|
|
condition: service_started
|
|
|
|
|
firecrawl:
|
|
|
|
|
condition: service_started
|
2026-06-06 17:18:15 +08:00
|
|
|
volumes:
|
|
|
|
|
- ./docker-data/jobs:/shared-jobs
|