# 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:使用构建脚本(推荐) ```bash # 给脚本执行权限 chmod +x docker-build.sh # 构建并启动服务 ./docker-build.sh # 或者清理后重新构建 ./docker-build.sh --clean # 使用Docker Compose启动 ./docker-build.sh --compose ``` ### 方法2:手动构建 #### 使用Supervisor方案(推荐) ```bash # 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脚本方案 ```bash # 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 ```bash # 启动服务 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. 启动服务 ```bash ./docker-build.sh ``` ### 2. 访问Web界面 - **API服务器**:http://localhost:5050 - **历史查看器**:http://localhost:5051 ### 3. 使用命令行工具 ```bash # 进入容器 docker exec -it dms-compliance-tool bash # 运行测试 python run_api_tests.py --base-url http://your-api-server --generate-pdf ``` ## 📊 监控和管理 ### 查看容器状态 ```bash # 查看运行状态 docker ps # 查看日志 docker logs dms-compliance-tool # 实时查看日志 docker logs -f dms-compliance-tool ``` ### 健康检查 ```bash # 检查服务健康状态 curl http://localhost:5050/ # 查看健康检查状态 docker inspect dms-compliance-tool | grep Health -A 10 ``` ### 资源使用 ```bash # 查看资源使用情况 docker stats dms-compliance-tool ``` ## 🔄 更新和维护 ### 更新镜像 ```bash # 停止服务 docker stop dms-compliance-tool # 重新构建 ./docker-build.sh --clean # 或使用Docker Compose docker-compose down docker-compose build --no-cache docker-compose up -d ``` ### 备份数据 ```bash # 备份测试报告 tar -czf test_reports_backup.tar.gz test_reports/ # 备份上传文件 tar -czf uploads_backup.tar.gz uploads/ ``` ## 🛠️ 故障排除 ### 常见问题 1. **端口被占用** ```bash # 检查端口占用 lsof -i :5050 # 修改端口映射 docker run -p 8080:5050 ... ``` 2. **权限问题** ```bash # 检查目录权限 ls -la test_reports/ uploads/ logs/ # 修复权限 sudo chown -R $USER:$USER test_reports/ uploads/ logs/ ``` 3. **内存不足** ```bash # 检查Docker资源限制 docker system df # 清理未使用的镜像 docker system prune -a ``` ### 调试模式 ```bash # 以调试模式启动 docker run -it --rm \ -p 5050:5050 \ -v $(pwd)/test_reports:/app/test_reports \ -e FLASK_ENV=development \ dms-compliance-tool:latest ``` ## 🌐 生产环境部署 ### 使用Nginx反向代理 ```bash # 启动包含Nginx的完整服务 docker-compose --profile with-nginx up -d ``` ### SSL证书配置 1. 将SSL证书放在 `nginx/ssl/` 目录 2. 修改 `nginx/nginx.conf` 添加HTTPS配置 3. 重启服务 ### 性能优化 - 调整容器资源限制 - 配置日志轮转 - 使用外部数据库(如需要) - 配置负载均衡(多实例部署) ## 📦 镜像管理 ### 导出镜像 ```bash # 导出镜像 docker save dms-compliance-tool:latest | gzip > dms-compliance-tool.tar.gz ``` ### 导入镜像 ```bash # 导入镜像 gunzip -c dms-compliance-tool.tar.gz | docker load ``` ### 推送到私有仓库 ```bash # 标记镜像 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合规性测试工具了!