# Docker Compose 配置 - 生产环境部署 (优化版: 2核2G服务器) # 包含: FastAPI 应用 + Qdrant Server version: '3.8' services: # ============================================================ # Qdrant 向量数据库 (限制内存 512MB) # ============================================================ qdrant: image: qdrant/qdrant:latest container_name: github-rag-qdrant restart: unless-stopped ports: - "6333:6333" # REST API - "6334:6334" # gRPC volumes: - qdrant_data:/qdrant/storage environment: - QDRANT__SERVICE__GRPC_PORT=6334 - QDRANT__STORAGE__ON_DISK_PAYLOAD=true # Payload 存磁盘,省内存 deploy: resources: limits: memory: 512M reservations: memory: 256M healthcheck: test: ["CMD", "curl", "-f", "http://localhost:6333/health"] interval: 30s timeout: 10s retries: 3 # ============================================================ # FastAPI 应用 (2 Workers, 限制内存 1GB) # ============================================================ app: build: context: . dockerfile: Dockerfile container_name: github-rag-app restart: unless-stopped ports: - "8000:8000" environment: # Qdrant Server 模式 - QDRANT_MODE=server - QDRANT_URL=http://qdrant:6333 # Worker 数量 (2核服务器建议2个) - GUNICORN_WORKERS=2 # 文件锁 (多 Worker) - LOCK_BACKEND=file - LOCK_DIR=/app/data/locks # LLM 配置 (从 .env 读取) - LLM_PROVIDER=${LLM_PROVIDER:-deepseek} - DEEPSEEK_API_KEY=${DEEPSEEK_API_KEY} - OPENAI_API_KEY=${OPENAI_API_KEY} - ANTHROPIC_API_KEY=${ANTHROPIC_API_KEY} - GEMINI_API_KEY=${GEMINI_API_KEY} - SILICON_API_KEY=${SILICON_API_KEY} - GITHUB_TOKEN=${GITHUB_TOKEN} volumes: - app_data:/app/data - app_logs:/app/logs deploy: resources: limits: memory: 1G reservations: memory: 512M depends_on: qdrant: condition: service_healthy healthcheck: test: ["CMD", "curl", "-f", "http://localhost:8000/health"] interval: 30s timeout: 10s retries: 3 volumes: qdrant_data: driver: local app_data: driver: local app_logs: driver: local # ============================================================ # 使用说明 # ============================================================ # 1. 复制 .env.example 为 .env 并配置 API Keys # 2. 启动服务: docker-compose up -d # 3. 查看日志: docker-compose logs -f app # 4. 停止服务: docker-compose down # # 扩展到多 Worker: # 修改 Dockerfile 中的 gunicorn workers 数量,或使用: # docker-compose up -d --scale app=3 # 配合 Nginx/Traefik 做负载均衡