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: