name: docsgpt-oss services: frontend: build: ../frontend volumes: - ../frontend/src:/app/src environment: - VITE_API_HOST=http://localhost:7091 - VITE_API_STREAMING=$VITE_API_STREAMING - VITE_GOOGLE_CLIENT_ID=$VITE_GOOGLE_CLIENT_ID ports: - "5173:5173" depends_on: - backend backend: user: root build: ../application env_file: - ../.env environment: # Override URLs to use docker service names - CELERY_BROKER_URL=redis://redis:6379/0 - CELERY_RESULT_BACKEND=redis://redis:6379/1 - CACHE_REDIS_URL=redis://redis:6379/2 - POSTGRES_URI=postgresql://docsgpt:docsgpt@postgres:5432/docsgpt ports: - "7091:7091" volumes: - ../application/indexes:/app/indexes - ../application/inputs:/app/inputs - ../application/vectors:/app/vectors depends_on: redis: condition: service_started postgres: condition: service_healthy worker: user: root build: ../application # Consumes the default queue AND the dedicated `parsing` queue (read_document / # parse_document). Without `parsing` here the read_document await never resolves. # For heavy/OCR parsing run a separate worker with `-Q parsing`. command: celery -A application.app.celery worker -l INFO -B -Q docsgpt,parsing env_file: - ../.env environment: # Override URLs to use docker service names - CELERY_BROKER_URL=redis://redis:6379/0 - CELERY_RESULT_BACKEND=redis://redis:6379/1 - API_URL=http://backend:7091 - CACHE_REDIS_URL=redis://redis:6379/2 - POSTGRES_URI=postgresql://docsgpt:docsgpt@postgres:5432/docsgpt volumes: - ../application/indexes:/app/indexes - ../application/inputs:/app/inputs - ../application/vectors:/app/vectors depends_on: redis: condition: service_started postgres: condition: service_healthy redis: image: redis:6-alpine ports: - 6379:6379 postgres: image: postgres:16-alpine environment: - POSTGRES_USER=docsgpt - POSTGRES_PASSWORD=docsgpt - POSTGRES_DB=docsgpt ports: - "5432:5432" volumes: - postgres_data:/var/lib/postgresql/data healthcheck: test: ["CMD-SHELL", "pg_isready -U docsgpt -d docsgpt"] interval: 5s timeout: 5s retries: 10 volumes: postgres_data: