| services: | |
| backend: | |
| build: | |
| context: . | |
| dockerfile: backend/Dockerfile | |
| container_name: agentic-rag-backend | |
| restart: unless-stopped | |
| ports: | |
| - "8000:8000" | |
| environment: | |
| - GEMINI_API_KEY=${GEMINI_API_KEY} | |
| - GEMINI_TEXT_MODEL=${GEMINI_TEXT_MODEL:-models/gemini-flash-latest} | |
| - GEMINI_VERIFIER_MODEL=${GEMINI_VERIFIER_MODEL:-models/gemini-pro-latest} | |
| - GEMINI_VISION_MODEL=${GEMINI_VISION_MODEL:-models/gemini-flash-latest} | |
| - GEMINI_EMBEDDING_MODEL=${GEMINI_EMBEDDING_MODEL:-models/text-embedding-004} | |
| - TAVILY_API_KEY=${TAVILY_API_KEY} | |
| - PYTHONUNBUFFERED=1 | |
| volumes: | |
| - ./storage:/app/storage | |
| - ./uploads:/app/uploads | |
| - ./backend/output:/app/backend/output | |
| networks: | |
| - rag-network | |
| healthcheck: | |
| test: ["CMD", "curl", "-f", "http://localhost:8000/health"] | |
| interval: 30s | |
| timeout: 10s | |
| retries: 3 | |
| start_period: 40s | |
| frontend: | |
| build: | |
| context: ./frontend | |
| dockerfile: Dockerfile | |
| container_name: agentic-rag-frontend | |
| restart: unless-stopped | |
| ports: | |
| - "3000:80" | |
| depends_on: | |
| backend: | |
| condition: service_healthy | |
| networks: | |
| - rag-network | |
| healthcheck: | |
| test: ["CMD", "wget", "--quiet", "--tries=1", "--spider", "http://localhost/"] | |
| interval: 30s | |
| timeout: 10s | |
| retries: 3 | |
| start_period: 10s | |
| networks: | |
| rag-network: | |
| driver: bridge | |
| volumes: | |
| storage: | |
| uploads: | |
| output: | |