321 lines
6.6 KiB
Markdown
321 lines
6.6 KiB
Markdown
# 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合规性测试工具了!
|