# 数学作业批改系统 - Docker 部署 ## 📦 快速开始 ### 一键部署 ```bash # 运行部署脚本 ./deploy.sh ``` ### 手动部署 ```bash # 构建镜像 docker build -t math-grading:latest . # 启动容器 docker run -d \ --name math-grading \ -p 8000:8000 \ -v $(pwd)/logs:/app/work/logs \ -v $(pwd)/cache:/tmp/homework_cache \ --restart unless-stopped \ math-grading:latest ``` ## 🧪 测试验证 ```bash # 运行测试脚本 ./test.sh ``` ## 📝 配置说明 ### 已硬编码的配置 | 配置项 | 值 | 说明 | |--------|-----|------| | API 端点 | `https://api.coze.cn/v1` | 包含 /v1 前缀 | | COZE_API_KEY | `Bearer eyJhbGci...` | Coze API 认证密钥 | | COZE_WORKSPACE_ID | `7622238752642957347` | 工作区 ID | | LLM_MODEL_NAME | `doubao-seed-2-0-pro-260215` | LLM 模型名称 | ### 配置来源 - **API Key**: 从原始 Dockerfile 中提取 - **Workspace ID**: 从 JWT Token 的 `sub` 字段提取 ``` spiffe://api.coze.cn/workload_identity/id:7622238752642957347 ``` ## 🔧 常用命令 ### 容器管理 ```bash # 查看状态 docker ps | grep math-grading # 查看日志 docker logs -f math-grading # 停止服务 docker stop math-grading # 启动服务 docker start math-grading # 重启服务 docker restart math-grading # 进入容器 docker exec -it math-grading /bin/bash ``` ## 📊 API 接口 ### 批改接口 **请求**: ```bash curl -X POST http://localhost:8000/stream_run \ -H "Content-Type: application/json" \ -d '{ "student_homework": [ { "student_id": 1, "student_name": "张三", "homework_images": [ "https://example.com/image1.jpg", "https://example.com/image2.jpg" ] } ], "answer_doc_url": "https://example.com/answers.docx", "comment_max_length": 50, "max_concurrent": 5 }' ``` **参数说明**: - `student_homework`: 学生作业列表 - `answer_doc_url`: 答案文档 URL(可选) - `comment_max_length`: 评语最大字数(默认 50) - `max_concurrent`: 并发批改数量(默认 5) ## 📁 目录结构 ``` . ├── Dockerfile # Docker 镜像配置(硬编码 KEY) ├── deploy.sh # 一键部署脚本 ├── test.sh # 快速测试脚本 ├── DOCKER_DEPLOY.md # 详细部署文档 ├── logs/ # 日志目录 ├── cache/ # 缓存目录 └── src/ # 源代码 ``` ## 🔍 故障排查 ### 问题 1: 容器无法启动 ```bash # 查看详细日志 docker logs math-grading # 检查端口占用 netstat -tuln | grep 8000 ``` ### 问题 2: LLM 调用失败 ```bash # 检查环境变量 docker exec math-grading env | grep COZE # 应该看到: # COZE_API_KEY=Bearer eyJhbGci... # COZE_WORKSPACE_ID=7622238752642957347 # COZE_INTEGRATION_BASE_URL=https://api.coze.cn/v1 ``` ### 问题 3: 认证错误 (401) - 确认 COZE_API_KEY 和 COZE_WORKSPACE_ID 都已设置 - 检查 Token 是否有效 ### 问题 4: 端点错误 (404) - 确认 API 端点包含 /v1 前缀 - 检查 COZE_INTEGRATION_BASE_URL 配置 ## 📚 详细文档 - [完整部署指南](DOCKER_DEPLOY.md) - [项目文档](AGENTS.md) - [Docker 404 错误修复](assets/fix_docker_404.md) ## ⚠️ 安全提示 当前 Dockerfile 将 API Key 硬编码在镜像中: - ✅ 优点:部署简单,无需额外配置 - ❌ 缺点:密钥会暴露在镜像中 ### 安全建议 1. **使用私有仓库**:不要推送到公共 Docker Registry 2. **访问控制**:限制镜像拉取权限 3. **定期更换密钥**:在 Coze 平台定期更换 API Key 4. **生产环境**:考虑使用环境变量方式(参考 docker-compose.yml) ## 🎯 验证成功标志 部署成功后,应该看到: ```bash # 1. 容器运行中 docker ps | grep math-grading # Up 5 minutes # 2. 健康检查通过 curl http://localhost:8000/health # 200 OK # 3. 日志无错误 docker logs math-grading | grep ERROR # (无输出) # 4. LLM 调用成功 # 日志显示: # HTTP Request: POST https://api.coze.cn/v1/chat/completions "HTTP/1.1 200 OK" ``` ## 📞 支持 如遇问题,请: 1. 查看日志: `docker logs -f math-grading` 2. 运行测试: `./test.sh` 3. 参考文档: `DOCKER_DEPLOY.md`