mirror of
https://github.com/handsomezhuzhu/QQuiz.git
synced 2026-02-20 12:00:14 +00:00
66 lines
2.0 KiB
YAML
66 lines
2.0 KiB
YAML
# ==================== 单容器部署配置 ====================
|
||
# 使用方法: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:
|