203 lines
4.2 KiB
Markdown
203 lines
4.2 KiB
Markdown
# 数学作业批改系统 - 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`
|