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

321 lines
6.6 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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合规性测试工具了