crypt / DOCKER_README.md
heyunfei's picture
Upload 56 files
85653bc verified
# Kronos Web UI - Docker Deployment Guide
## 概述
这个文档提供了使用 Docker 部署 Kronos Web UI 的完整指南。
## 快速开始
### 使用 Docker Compose(推荐)
1. **构建并启动服务**
```bash
docker-compose up --build
```
2. **后台运行**
```bash
docker-compose up -d --build
```
3. **停止服务**
```bash
docker-compose down
```
4. **查看日志**
```bash
docker-compose logs -f kronos-webui
```
### 使用 Docker 命令
1. **构建镜像**
```bash
docker build -t kronos-webui .
```
2. **运行容器**
```bash
docker run -d \
--name kronos-webui \
-p 7070:7070 \
-v $(pwd)/webui/prediction_results:/app/webui/prediction_results \
kronos-webui
```
3. **查看日志**
```bash
docker logs -f kronos-webui
```
4. **停止容器**
```bash
docker stop kronos-webui
docker rm kronos-webui
```
## 访问应用
启动成功后,通过以下地址访问:
- **Web UI**: http://localhost:7070
- **健康检查**: http://localhost:7070/
## 配置说明
### 环境变量
| 变量名 | 默认值 | 说明 |
|--------|--------|------|
| `PYTHONPATH` | `/app` | Python 路径 |
| `FLASK_APP` | `webui/app.py` | Flask 应用入口 |
| `FLASK_ENV` | `production` | Flask 环境 |
| `TZ` | `Asia/Shanghai` | 时区设置 |
### 数据持久化
以下目录会被持久化存储:
- `./webui/prediction_results` - 预测结果文件
- `./model/data` - 模型数据(如果存在)
### 端口配置
- **容器内端口**: 7070
- **宿主机端口**: 7070(可在 docker-compose.yml 中修改)
## 生产环境部署
### 使用 Gunicorn
容器会自动检测并使用 Gunicorn 作为生产环境的 WSGI 服务器:
- 工作进程数:2
- 超时时间:120秒
- 绑定地址:0.0.0.0:7070
### 健康检查
容器包含健康检查功能:
- 检查间隔:30秒
- 超时时间:10秒
- 重试次数:3次
- 启动等待时间:40秒
### 安全配置
- 使用非 root 用户运行(UID: 1000)
- 最小化镜像大小(多阶段构建)
- 只安装必要的运行时依赖
## 故障排除
### 常见问题
1. **端口冲突**
```bash
# 修改 docker-compose.yml 中的端口映射
ports:
- "8080:7070" # 使用 8080 端口
```
2. **权限问题**
```bash
# 确保预测结果目录有正确权限
chmod 755 webui/prediction_results
```
3. **模型加载失败**
- 检查网络连接(需要下载 Hugging Face 模型)
- 确保有足够的磁盘空间
- 查看容器日志了解详细错误信息
### 日志查看
```bash
# 查看实时日志
docker-compose logs -f
# 查看特定服务日志
docker-compose logs kronos-webui
# 查看容器日志
docker logs kronos-webui
```
### 进入容器调试
```bash
# 进入运行中的容器
docker exec -it kronos-webui /bin/bash
# 或使用 docker-compose
docker-compose exec kronos-webui /bin/bash
```
## 性能优化
### 资源限制
在 docker-compose.yml 中添加资源限制:
```yaml
services:
kronos-webui:
# ... 其他配置
deploy:
resources:
limits:
memory: 2G
cpus: '1.0'
reservations:
memory: 1G
cpus: '0.5'
```
### 缓存优化
- 使用 `.dockerignore` 排除不必要的文件
- 多阶段构建减少最终镜像大小
- 合理使用 Docker 层缓存
## 更新和维护
### 更新应用
```bash
# 重新构建并启动
docker-compose up --build -d
# 清理旧镜像
docker image prune -f
```
### 备份数据
```bash
# 备份预测结果
tar -czf prediction_results_backup.tar.gz webui/prediction_results/
# 备份模型数据(如果存在)
tar -czf model_data_backup.tar.gz model/data/
```
## 监控
### 容器状态
```bash
# 查看容器状态
docker-compose ps
# 查看资源使用情况
docker stats kronos-webui
```
### 健康检查
```bash
# 手动健康检查
curl -f http://localhost:7070/
# 查看健康检查状态
docker inspect kronos-webui | grep -A 10 Health
```