services: db: image: pgvector/pgvector:pg16 container_name: rag_postgres restart: always environment: POSTGRES_USER: ${POSTGRES_USER} POSTGRES_PASSWORD: ${POSTGRES_PASSWORD} POSTGRES_DB: ${POSTGRES_DB} ports: - "5432:5432" volumes: - pgdata:/var/lib/postgresql/data healthcheck: test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER} -d ${POSTGRES_DB}"] interval: 5s timeout: 5s retries: 5 redis: image: redis:7-alpine container_name: rag_redis restart: always ports: - "6379:6379" healthcheck: test: ["CMD", "redis-cli", "ping"] interval: 5s timeout: 5s retries: 5 api: build: . container_name: rag_api restart: always env_file: .env ports: - "8000:8000" depends_on: db: condition: service_healthy redis: condition: service_healthy volumes: - .:/app command: uvicorn app.main:app --host 0.0.0.0 --port 8000 --reload worker: build: . container_name: rag_worker restart: always env_file: .env depends_on: db: condition: service_healthy redis: condition: service_healthy volumes: - .:/app command: celery -A app.workers.celery_app worker --loglevel=info volumes: pgdata: