compliance/docs/Docker_Deployment_Guide.md
gongwenxin fa343eb111 .
2025-08-07 15:07:38 +08:00

6.6 KiB
Raw Permalink Blame History

DMS合规性测试工具 Docker部署指南

🐳 Docker化优势

  • 环境一致性:消除环境差异问题
  • 简化部署:一条命令启动整个服务
  • 依赖管理:所有依赖都打包在镜像中
  • 便携性可在任何Docker环境中运行
  • 版本控制:支持多版本镜像管理
  • 多服务支持同时运行API服务和历史查看器

🔧 多服务架构

本Docker镜像包含两个服务

  • API服务器 (api_server.py) - 端口5050主要的API测试服务
  • 历史查看器 (history_viewer.py) - 端口5051测试历史查看和管理

提供两种多服务管理方案:

  1. Supervisor方案 (推荐)使用supervisor管理进程更稳定
  2. Shell脚本方案:使用自定义脚本管理,更简单

📋 前置要求

  • Docker 20.10+
  • Docker Compose 1.29+ (可选)
  • 至少2GB可用内存
  • 至少5GB可用磁盘空间

🚀 快速开始

方法1使用构建脚本推荐

# 给脚本执行权限
chmod +x docker-build.sh

# 构建并启动服务
./docker-build.sh

# 或者清理后重新构建
./docker-build.sh --clean

# 使用Docker Compose启动
./docker-build.sh --compose

方法2手动构建

使用Supervisor方案推荐

# 1. 构建镜像
docker build -f Dockerfile.service -t dms-compliance-tool:latest .

# 2. 创建必要目录
mkdir -p test_reports uploads logs

# 3. 启动容器
docker run -d \
  --name dms-compliance-tool \
  -p 5050:5050 \
  -p 5051:5051 \
  -v $(pwd)/test_reports:/app/test_reports \
  -v $(pwd)/uploads:/app/uploads \
  -v $(pwd)/logs:/app/logs \
  -e TZ=Asia/Shanghai \
  --restart unless-stopped \
  dms-compliance-tool:latest

使用Shell脚本方案

# 1. 构建简单版镜像
docker build -f Dockerfile.simple -t dms-compliance-tool:simple .

# 2. 启动容器
docker run -d \
  --name dms-compliance-tool \
  -p 5050:5050 \
  -p 5051:5051 \
  -v $(pwd)/test_reports:/app/test_reports \
  -v $(pwd)/uploads:/app/uploads \
  -v $(pwd)/logs:/app/logs \
  -e TZ=Asia/Shanghai \
  --restart unless-stopped \
  dms-compliance-tool:simple

方法3使用Docker Compose

# 启动服务
docker-compose up -d

# 查看日志
docker-compose logs -f

# 停止服务
docker-compose down

📁 目录结构

compliance/
├── Dockerfile.service          # 服务运行镜像
├── docker-compose.yml         # Docker Compose配置
├── docker-build.sh           # 构建脚本
├── .dockerignore             # Docker忽略文件
├── nginx/
│   └── nginx.conf           # Nginx配置可选
├── test_reports/            # 测试报告目录(持久化)
├── uploads/                 # 上传文件目录(持久化)
├── logs/                   # 日志目录(持久化)
└── config/                 # 配置文件目录(可选)

🔧 配置选项

环境变量

变量名 默认值 说明
FLASK_ENV production Flask运行环境
PYTHONUNBUFFERED 1 Python输出不缓冲
TZ Asia/Shanghai 时区设置

端口映射

  • 5050:5050 - API服务器端口主服务
  • 5051:5051 - 历史查看器端口
  • 80:80 - Nginx HTTP端口可选
  • 443:443 - Nginx HTTPS端口可选

数据卷

  • ./test_reports:/app/test_reports - 测试报告持久化
  • ./uploads:/app/uploads - 上传文件持久化
  • ./logs:/app/logs - 日志文件持久化

🎯 使用方法

1. 启动服务

./docker-build.sh

2. 访问Web界面

3. 使用命令行工具

# 进入容器
docker exec -it dms-compliance-tool bash

# 运行测试
python run_api_tests.py --base-url http://your-api-server --generate-pdf

📊 监控和管理

查看容器状态

# 查看运行状态
docker ps

# 查看日志
docker logs dms-compliance-tool

# 实时查看日志
docker logs -f dms-compliance-tool

健康检查

# 检查服务健康状态
curl http://localhost:5050/

# 查看健康检查状态
docker inspect dms-compliance-tool | grep Health -A 10

资源使用

# 查看资源使用情况
docker stats dms-compliance-tool

🔄 更新和维护

更新镜像

# 停止服务
docker stop dms-compliance-tool

# 重新构建
./docker-build.sh --clean

# 或使用Docker Compose
docker-compose down
docker-compose build --no-cache
docker-compose up -d

备份数据

# 备份测试报告
tar -czf test_reports_backup.tar.gz test_reports/

# 备份上传文件
tar -czf uploads_backup.tar.gz uploads/

🛠️ 故障排除

常见问题

  1. 端口被占用

    # 检查端口占用
    lsof -i :5050
    
    # 修改端口映射
    docker run -p 8080:5050 ...
    
  2. 权限问题

    # 检查目录权限
    ls -la test_reports/ uploads/ logs/
    
    # 修复权限
    sudo chown -R $USER:$USER test_reports/ uploads/ logs/
    
  3. 内存不足

    # 检查Docker资源限制
    docker system df
    
    # 清理未使用的镜像
    docker system prune -a
    

调试模式

# 以调试模式启动
docker run -it --rm \
  -p 5050:5050 \
  -v $(pwd)/test_reports:/app/test_reports \
  -e FLASK_ENV=development \
  dms-compliance-tool:latest

🌐 生产环境部署

使用Nginx反向代理

# 启动包含Nginx的完整服务
docker-compose --profile with-nginx up -d

SSL证书配置

  1. 将SSL证书放在 nginx/ssl/ 目录
  2. 修改 nginx/nginx.conf 添加HTTPS配置
  3. 重启服务

性能优化

  • 调整容器资源限制
  • 配置日志轮转
  • 使用外部数据库(如需要)
  • 配置负载均衡(多实例部署)

📦 镜像管理

导出镜像

# 导出镜像
docker save dms-compliance-tool:latest | gzip > dms-compliance-tool.tar.gz

导入镜像

# 导入镜像
gunzip -c dms-compliance-tool.tar.gz | docker load

推送到私有仓库

# 标记镜像
docker tag dms-compliance-tool:latest your-registry.com/dms-compliance-tool:latest

# 推送镜像
docker push your-registry.com/dms-compliance-tool:latest

验证部署

  1. 服务可访问性http://localhost:5050
  2. 健康检查容器状态为healthy
  3. 功能测试上传API规范并执行测试
  4. PDF生成验证PDF报告生成功能
  5. 数据持久化:重启容器后数据仍存在

部署成功后您就可以在任何支持Docker的环境中快速部署DMS合规性测试工具了