Kronos Web UI - Docker Deployment Guide
概述
这个文档提供了使用 Docker 部署 Kronos Web UI 的完整指南。
快速开始
使用 Docker Compose(推荐)
构建并启动服务
docker-compose up --build
后台运行
docker-compose up -d --build
停止服务
docker-compose down
查看日志
docker-compose logs -f kronos-webui
使用 Docker 命令
构建镜像
docker build -t kronos-webui .
运行容器
docker run -d \ --name kronos-webui \ -p 7070:7070 \ -v $(pwd)/webui/prediction_results:/app/webui/prediction_results \ kronos-webui
查看日志
docker logs -f kronos-webui
停止容器
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)
- 最小化镜像大小(多阶段构建)
- 只安装必要的运行时依赖
故障排除
常见问题
端口冲突
# 修改 docker-compose.yml 中的端口映射 ports: - "8080:7070" # 使用 8080 端口
权限问题
# 确保预测结果目录有正确权限 chmod 755 webui/prediction_results
模型加载失败
- 检查网络连接(需要下载 Hugging Face 模型)
- 确保有足够的磁盘空间
- 查看容器日志了解详细错误信息
日志查看
# 查看实时日志
docker-compose logs -f
# 查看特定服务日志
docker-compose logs kronos-webui
# 查看容器日志
docker logs kronos-webui
进入容器调试
# 进入运行中的容器
docker exec -it kronos-webui /bin/bash
# 或使用 docker-compose
docker-compose exec kronos-webui /bin/bash
性能优化
资源限制
在 docker-compose.yml 中添加资源限制:
services:
kronos-webui:
# ... 其他配置
deploy:
resources:
limits:
memory: 2G
cpus: '1.0'
reservations:
memory: 1G
cpus: '0.5'
缓存优化
- 使用
.dockerignore
排除不必要的文件 - 多阶段构建减少最终镜像大小
- 合理使用 Docker 层缓存
更新和维护
更新应用
# 重新构建并启动
docker-compose up --build -d
# 清理旧镜像
docker image prune -f
备份数据
# 备份预测结果
tar -czf prediction_results_backup.tar.gz webui/prediction_results/
# 备份模型数据(如果存在)
tar -czf model_data_backup.tar.gz model/data/
监控
容器状态
# 查看容器状态
docker-compose ps
# 查看资源使用情况
docker stats kronos-webui
健康检查
# 手动健康检查
curl -f http://localhost:7070/
# 查看健康检查状态
docker inspect kronos-webui | grep -A 10 Health