# ==================== 单容器部署配置 ==================== # 使用方法:docker-compose -f docker-compose-single.yml up -d version: '3.8' services: qquiz: build: context: . dockerfile: Dockerfile container_name: qquiz ports: - "8000:8000" environment: # 数据库配置(SQLite 默认) - DATABASE_URL=sqlite+aiosqlite:////app/data/qquiz.db # JWT 密钥(生产环境必须设置为随机字符串) - SECRET_KEY=${SECRET_KEY:?Set SECRET_KEY to a random string of at least 32 characters} # 管理员密码(生产环境必须设置为随机强密码,至少 12 位) - ADMIN_PASSWORD=${ADMIN_PASSWORD:?Set ADMIN_PASSWORD to a strong password of at least 12 characters} # AI 提供商配置 - AI_PROVIDER=gemini - GEMINI_API_KEY=${GEMINI_API_KEY} - GEMINI_BASE_URL=${GEMINI_BASE_URL:-https://generativelanguage.googleapis.com} - GEMINI_MODEL=${GEMINI_MODEL:-gemini-2.0-flash-exp} # OpenAI 配置(可选) - OPENAI_API_KEY=${OPENAI_API_KEY:-} - OPENAI_BASE_URL=${OPENAI_BASE_URL:-https://api.openai.com/v1} - OPENAI_MODEL=${OPENAI_MODEL:-gpt-4o-mini} # Anthropic 配置(可选) - ANTHROPIC_API_KEY=${ANTHROPIC_API_KEY:-} - ANTHROPIC_MODEL=${ANTHROPIC_MODEL:-claude-3-haiku-20240307} # Qwen 配置(可选) - QWEN_API_KEY=${QWEN_API_KEY:-} - QWEN_BASE_URL=${QWEN_BASE_URL:-https://dashscope.aliyuncs.com/compatible-mode/v1} - QWEN_MODEL=${QWEN_MODEL:-qwen-plus} # 系统配置 - ALLOW_REGISTRATION=true - MAX_UPLOAD_SIZE_MB=10 - MAX_DAILY_UPLOADS=20 volumes: # 持久化数据卷 - qquiz_data:/app/data # 数据库文件 - qquiz_uploads:/app/uploads # 上传文件 restart: unless-stopped healthcheck: test: ["CMD", "curl", "-f", "http://localhost:8000/health"] interval: 30s timeout: 10s retries: 3 start_period: 40s volumes: qquiz_data: qquiz_uploads: