# 多服务Docker配置总结 ## 🎯 实现目标 成功将DMS合规性测试工具配置为在单个Docker容器中运行两个服务: 1. **API服务器** (api_server.py) - 端口5050 2. **历史查看器** (history_viewer.py) - 端口5051 ## 🔧 技术方案 ### 方案1:Supervisor管理(推荐) **文件**: `Dockerfile.service` + `supervisord.conf` **优势**: - 进程管理更稳定 - 自动重启失败的服务 - 详细的日志管理 - 生产环境推荐 **配置**: ```dockerfile # 安装supervisor RUN apt-get install -y supervisor # 使用supervisor启动 CMD ["/usr/bin/supervisord", "-c", "/etc/supervisor/conf.d/supervisord.conf"] ``` ### 方案2:Shell脚本管理 **文件**: `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合规性测试工具功能!