Skip to content

Latest commit

 

History

History
223 lines (171 loc) · 5.18 KB

File metadata and controls

223 lines (171 loc) · 5.18 KB

Docker版本管理和性能优化指南

🚀 快速开始

1. 基本使用

# 构建并部署新版本(自动使用时间戳版本)
./docker-manager.sh deploy

# 查看状态
./docker-manager.sh status

# 查看日志
./docker-manager.sh logs

# 回滚到上一版本
./docker-manager.sh rollback

2. 版本管理特性

  • 时间戳版本:使用 yyyyMMddHHmm 格式(如:202412151430)
  • 自动模型缓存:映射本地 ~/.cache/modelscope/hub/models/iic 目录
  • 智能清理:自动保留最新3个版本
  • 快速回滚:支持一键回滚到任意版本

📈 性能优化

启动速度优化

  1. 懒加载模式(推荐用于开发环境):

    export LAZY_LOAD_MODEL=true
    ./docker-manager.sh deploy
  2. 预加载模式(推荐用于生产环境):

    export LAZY_LOAD_MODEL=false
    ./docker-manager.sh deploy

Docker构建优化

  1. 使用优化的Dockerfile:

    # 自动切换到优化的Dockerfile
    source deploy-config.sh
    use_optimized_dockerfile
  2. 启用BuildKit:

    export DOCKER_BUILDKIT=1
    ./docker-manager.sh deploy

🔧 Docker管理命令

部署管理

./docker-manager.sh deploy                    # 构建新版本并部署(使用当前时间戳)
./docker-manager.sh rollback                  # 回滚到上一版本  
./docker-manager.sh rollback 202412151430     # 回滚到指定时间戳版本
./docker-manager.sh versions                  # 查看所有可用版本

容器管理

./docker-manager.sh start                     # 启动容器(使用latest)
./docker-manager.sh start 202412151430        # 启动指定时间戳版本
./docker-manager.sh stop                      # 停止并删除容器
./docker-manager.sh restart                   # 重启容器

监控和调试

./docker-manager.sh status                    # 查看完整状态
./docker-manager.sh logs                      # 查看日志(50行)
./docker-manager.sh logs 100                  # 查看日志(100行)

清理

./docker-manager.sh cleanup                   # 删除所有镜像和容器(危险!)

🔍 健康检查

应用提供了多个监控端点:

  • 健康检查: http://localhost:8000/system/health
  • 就绪检查: http://localhost:8000/system/readiness
  • 系统状态: http://localhost:8000/system/status

使用示例:

# 检查应用是否健康
curl http://localhost:8000/system/health

# 检查模型是否已加载
curl http://localhost:8000/system/readiness

# 查看系统状态
curl http://localhost:8000/system/status

⚙️ 环境变量配置

性能相关

  • LAZY_LOAD_MODEL: 是否启用懒加载(true/false)
  • TRANS_WORKER: 工作线程数(默认:5)
  • TRANS_TIMEOUT: 转录超时时间(默认:120秒)
  • MAX_QUEUE_SIZE: 最大队列长度(默认:25)
  • MAX_FILE_SIZE: 最大文件大小(默认:50MB)

Docker相关

  • PORT: 服务端口(默认:8000)
  • UPLOAD_DIRECTORY: 上传目录路径
  • DOCKER_BUILDKIT: 启用Docker BuildKit(1/0)

📊 版本管理

脚本自动管理Docker镜像版本:

  1. 时间戳版本号:每次部署使用当前时间作为版本号
  2. 保留策略:自动保留最新3个版本
  3. 标签管理:
    • zh-asr:202412151430, zh-asr:202412151445 等时间戳版本
    • zh-asr:latest 指向最新版本

版本格式

  • 时间戳格式:yyyyMMddHHmm
  • 示例:202412151430 = 2024年12月15日 14:30
  • 优势:
    • 更好的可追溯性
    • 自动按时间顺序排列
    • 直观的时间信息

模型缓存优化

脚本自动映射本地ModelScope缓存目录:

# 宿主机目录
~/.cache/modelscope/hub/models/iic

# 容器内目录
/root/.cache/modelscope/hub/models/iic

优势:

  • 避免每次部署时重新下载模型
  • 显著提高部署速度
  • 节省带宽和存储空间

版本文件

  • .docker_version: 记录当前版本号
  • docker-manager.log: 操作日志

🚨 故障排除

常见问题

  1. 启动太慢:

    # 启用懒加载
    export LAZY_LOAD_MODEL=true
    ./docker-manager.sh deploy
  2. 内存不足:

    # 减少工作线程
    export TRANS_WORKER=2
    ./docker-manager.sh deploy
  3. 容器无法启动:

    # 查看详细日志
    ./docker-manager.sh logs
    
    # 检查健康状态
    ./docker-manager.sh status
  4. 端口冲突:

    # 修改端口
    export PORT=8001
    ./docker-manager.sh deploy

调试模式

# 查看容器详细信息
docker inspect asr

# 进入容器调试
docker exec -it asr bash

# 查看容器资源使用
docker stats asr

📈 性能建议

开发环境

  • 使用懒加载模式
  • 较小的队列大小
  • 较短的超时时间

生产环境

  • 使用预加载模式
  • 根据CPU核心数设置工作线程
  • 较大的队列大小和超时时间
  • 启用容器健康检查

硬件建议

  • 最小配置:2核CPU,4GB内存
  • 推荐配置:4核CPU,8GB内存
  • 高性能配置:8核CPU,16GB内存