6.6 KiB
6.6 KiB
DMS合规性测试工具 Docker部署指南
🐳 Docker化优势
- 环境一致性:消除环境差异问题
- 简化部署:一条命令启动整个服务
- 依赖管理:所有依赖都打包在镜像中
- 便携性:可在任何Docker环境中运行
- 版本控制:支持多版本镜像管理
- 多服务支持:同时运行API服务和历史查看器
🔧 多服务架构
本Docker镜像包含两个服务:
- API服务器 (api_server.py) - 端口5050:主要的API测试服务
- 历史查看器 (history_viewer.py) - 端口5051:测试历史查看和管理
提供两种多服务管理方案:
- Supervisor方案 (推荐):使用supervisor管理进程,更稳定
- 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界面
- API服务器:http://localhost:5050
- 历史查看器:http://localhost:5051
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/
🛠️ 故障排除
常见问题
-
端口被占用
# 检查端口占用 lsof -i :5050 # 修改端口映射 docker run -p 8080:5050 ... -
权限问题
# 检查目录权限 ls -la test_reports/ uploads/ logs/ # 修复权限 sudo chown -R $USER:$USER test_reports/ uploads/ logs/ -
内存不足
# 检查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证书配置
- 将SSL证书放在
nginx/ssl/目录 - 修改
nginx/nginx.conf添加HTTPS配置 - 重启服务
性能优化
- 调整容器资源限制
- 配置日志轮转
- 使用外部数据库(如需要)
- 配置负载均衡(多实例部署)
📦 镜像管理
导出镜像
# 导出镜像
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
✅ 验证部署
- 服务可访问性:http://localhost:5050
- 健康检查:容器状态为healthy
- 功能测试:上传API规范并执行测试
- PDF生成:验证PDF报告生成功能
- 数据持久化:重启容器后数据仍存在
部署成功后,您就可以在任何支持Docker的环境中快速部署DMS合规性测试工具了!