File size: 4,264 Bytes
85653bc |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 |
# 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
```
|