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

```