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

5.3 KiB
Raw Blame History

多服务Docker配置总结

🎯 实现目标

成功将DMS合规性测试工具配置为在单个Docker容器中运行两个服务

  1. API服务器 (api_server.py) - 端口5050
  2. 历史查看器 (history_viewer.py) - 端口5051

🔧 技术方案

方案1Supervisor管理推荐

文件: Dockerfile.service + supervisord.conf

优势:

  • 进程管理更稳定
  • 自动重启失败的服务
  • 详细的日志管理
  • 生产环境推荐

配置:

# 安装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

优势:

  • 配置简单
  • 容易理解和调试
  • 适合开发环境

配置:

# 后台启动两个服务
python api_server.py &
python history_viewer.py &

📁 新增文件

文件 说明 方案
supervisord.conf Supervisor配置文件 方案1
start_services.sh 多服务启动脚本 方案2
Dockerfile.simple 简单版Dockerfile 方案2
test_multi_service.py 多服务测试脚本 通用

🚀 使用方法

构建和启动

# 使用自动化脚本(推荐)
./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

访问服务

测试服务

# 使用专用测试脚本
python test_multi_service.py

# 或使用Docker测试脚本
./test-docker.sh

📊 端口配置

服务 容器内端口 主机端口 说明
API服务器 5050 5050 主要的API测试服务
历史查看器 5051 5051 测试历史查看和管理

🔍 服务监控

查看服务状态

# 查看容器状态
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

健康检查

# 自动健康检查
curl http://localhost:5050/
curl http://localhost:5051/

# 使用测试脚本
python test_multi_service.py

🛠️ 故障排除

常见问题

  1. 端口冲突

    # 检查端口占用
    lsof -i :5050 -i :5051
    
    # 修改端口映射
    docker run -p 8050:5050 -p 8051:5051 ...
    
  2. 服务启动失败

    # 查看详细日志
    docker logs dms-compliance-tool
    
    # 进入容器调试
    docker exec -it dms-compliance-tool bash
    
  3. 服务间通信问题

    # 检查容器内网络
    docker exec dms-compliance-tool netstat -tlnp
    

调试命令

# 查看进程状态
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

📈 性能优化

资源限制

# 设置内存和CPU限制
docker run -d \
  --name dms-compliance-tool \
  --memory=1g \
  --cpus=1.0 \
  -p 5050:5050 -p 5051:5051 \
  dms-compliance-tool

日志管理

# 限制日志大小
docker run -d \
  --log-driver json-file \
  --log-opt max-size=10m \
  --log-opt max-file=3 \
  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

数据备份

# 备份测试报告和数据
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合规性测试工具功能