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. 构建并启动服务

    docker-compose up --build
    
  2. 后台运行

    docker-compose up -d --build
    
  3. 停止服务

    docker-compose down
    
  4. 查看日志

    docker-compose logs -f kronos-webui
    

使用 Docker 命令

  1. 构建镜像

    docker build -t kronos-webui .
    
  2. 运行容器

    docker run -d \
      --name kronos-webui \
      -p 7070:7070 \
      -v $(pwd)/webui/prediction_results:/app/webui/prediction_results \
      kronos-webui
    
  3. 查看日志

    docker logs -f kronos-webui
    
  4. 停止容器

    docker stop kronos-webui
    docker rm kronos-webui
    

访问应用

启动成功后,通过以下地址访问:

配置说明

环境变量

变量名 默认值 说明
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. 端口冲突

    # 修改 docker-compose.yml 中的端口映射
    ports:
      - "8080:7070"  # 使用 8080 端口
    
  2. 权限问题

    # 确保预测结果目录有正确权限
    chmod 755 webui/prediction_results
    
  3. 模型加载失败

    • 检查网络连接(需要下载 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