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

237 lines
5.3 KiB
Markdown
Raw 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.

# 多服务Docker配置总结
## 🎯 实现目标
成功将DMS合规性测试工具配置为在单个Docker容器中运行两个服务
1. **API服务器** (api_server.py) - 端口5050
2. **历史查看器** (history_viewer.py) - 端口5051
## 🔧 技术方案
### 方案1Supervisor管理推荐
**文件**: `Dockerfile.service` + `supervisord.conf`
**优势**:
- 进程管理更稳定
- 自动重启失败的服务
- 详细的日志管理
- 生产环境推荐
**配置**:
```dockerfile
# 安装supervisor
RUN apt-get install -y supervisor
# 使用supervisor启动
CMD ["/usr/bin/supervisord", "-c", "/etc/supervisor/conf.d/supervisord.conf"]
```
### 方案2Shell脚本管理
**文件**: `Dockerfile.simple` + `start_services.sh`
**优势**:
- 配置简单
- 容易理解和调试
- 适合开发环境
**配置**:
```bash
# 后台启动两个服务
python api_server.py &
python history_viewer.py &
```
## 📁 新增文件
| 文件 | 说明 | 方案 |
|------|------|------|
| `supervisord.conf` | Supervisor配置文件 | 方案1 |
| `start_services.sh` | 多服务启动脚本 | 方案2 |
| `Dockerfile.simple` | 简单版Dockerfile | 方案2 |
| `test_multi_service.py` | 多服务测试脚本 | 通用 |
## 🚀 使用方法
### 构建和启动
```bash
# 使用自动化脚本(推荐)
./docker-build.sh
# 手动构建Supervisor方案
docker build -f Dockerfile.service -t dms-compliance-tool .
docker run -d --name dms-compliance-tool -p 5050:5050 -p 5051:5051 dms-compliance-tool
# 手动构建Shell脚本方案
docker build -f Dockerfile.simple -t dms-compliance-tool:simple .
docker run -d --name dms-compliance-tool -p 5050:5050 -p 5051:5051 dms-compliance-tool:simple
```
### 访问服务
- **API服务器**: http://localhost:5050
- **历史查看器**: http://localhost:5051
### 测试服务
```bash
# 使用专用测试脚本
python test_multi_service.py
# 或使用Docker测试脚本
./test-docker.sh
```
## 📊 端口配置
| 服务 | 容器内端口 | 主机端口 | 说明 |
|------|------------|----------|------|
| API服务器 | 5050 | 5050 | 主要的API测试服务 |
| 历史查看器 | 5051 | 5051 | 测试历史查看和管理 |
## 🔍 服务监控
### 查看服务状态
```bash
# 查看容器状态
docker ps
# 查看所有服务日志
docker logs dms-compliance-tool
# 使用Supervisor查看服务状态方案1
docker exec dms-compliance-tool supervisorctl status
# 查看单个服务日志方案1
docker exec dms-compliance-tool tail -f /var/log/supervisor/api_server.log
docker exec dms-compliance-tool tail -f /var/log/supervisor/history_viewer.log
```
### 健康检查
```bash
# 自动健康检查
curl http://localhost:5050/
curl http://localhost:5051/
# 使用测试脚本
python test_multi_service.py
```
## 🛠️ 故障排除
### 常见问题
1. **端口冲突**
```bash
# 检查端口占用
lsof -i :5050 -i :5051
# 修改端口映射
docker run -p 8050:5050 -p 8051:5051 ...
```
2. **服务启动失败**
```bash
# 查看详细日志
docker logs dms-compliance-tool
# 进入容器调试
docker exec -it dms-compliance-tool bash
```
3. **服务间通信问题**
```bash
# 检查容器内网络
docker exec dms-compliance-tool netstat -tlnp
```
### 调试命令
```bash
# 查看进程状态
docker exec dms-compliance-tool ps aux
# 查看端口监听
docker exec dms-compliance-tool netstat -tlnp
# 重启单个服务Supervisor方案
docker exec dms-compliance-tool supervisorctl restart api_server
docker exec dms-compliance-tool supervisorctl restart history_viewer
```
## 📈 性能优化
### 资源限制
```bash
# 设置内存和CPU限制
docker run -d \
--name dms-compliance-tool \
--memory=1g \
--cpus=1.0 \
-p 5050:5050 -p 5051:5051 \
dms-compliance-tool
```
### 日志管理
```bash
# 限制日志大小
docker run -d \
--log-driver json-file \
--log-opt max-size=10m \
--log-opt max-file=3 \
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
# 备份测试报告和数据
docker cp dms-compliance-tool:/app/test_reports ./backup/
docker cp dms-compliance-tool:/app/uploads ./backup/
```
## ✅ 验证清单
部署完成后,请验证以下项目:
- [ ] 容器正常启动:`docker ps`
- [ ] API服务可访问`curl http://localhost:5050`
- [ ] 历史查看器可访问:`curl http://localhost:5051`
- [ ] 健康检查通过:`docker inspect dms-compliance-tool | grep Health`
- [ ] 日志正常:`docker logs dms-compliance-tool`
- [ ] 数据持久化:重启容器后数据仍存在
- [ ] 多服务测试通过:`python test_multi_service.py`
## 🎉 优势总结
1. **单容器部署**:简化部署流程,减少管理复杂度
2. **服务隔离**:两个服务独立运行,互不影响
3. **统一管理**:通过一个容器管理多个相关服务
4. **资源共享**:共享文件系统和网络资源
5. **便于维护**:统一的日志、监控和更新流程
现在您可以在一个Docker容器中同时运行API服务器和历史查看器实现完整的DMS合规性测试工具功能