Files
llm-in-text/docker-compose.yml
2026-06-27 22:22:42 +08:00

186 lines
5.4 KiB
YAML

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