| # 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 | |
| ``` | |