注册服务

This commit is contained in:
2026-02-09 23:59:25 +08:00
parent f145df4fa6
commit 3c03777b97
11 changed files with 865 additions and 456 deletions

View File

@@ -0,0 +1,53 @@
# 服务部署方案 - 无Docker支持
## 问题分析
当前的ServiceOrchestrator类完全依赖Docker来部署和管理服务当环境中没有Docker时服务部署会失败返回"Docker连接失败"的错误。
## 解决方案
修改ServiceOrchestrator类添加一个本地进程部署模式在没有Docker的情况下直接在本地启动服务进程。
## 实现步骤
### 1. 修改ServiceOrchestrator类
1. **添加部署模式配置**:在初始化方法中添加部署模式配置,支持"docker"和"local"两种模式。
2. **修改deploy_service方法**:根据部署模式选择不同的部署策略。
- 当部署模式为"docker"时使用现有的Docker部署逻辑。
- 当部署模式为"local"时,使用本地进程部署逻辑。
3. **实现本地进程部署逻辑**
- 创建服务目录结构
- 生成服务包装器
- 使用subprocess模块启动服务进程
- 验证服务启动
4. **修改服务管理方法**
- 修改start_service、stop_service、restart_service等方法使其支持本地进程管理。
- 修改get_service_status、get_service_logs等方法使其支持本地进程状态查询和日志获取。
### 2. 修改服务注册端点
修改services.py中的register_service函数添加部署模式参数允许用户选择使用Docker或本地进程部署。
### 3. 更新配置文件
在settings.py中添加部署模式配置默认值为"local"以便在没有Docker的环境中也能正常工作。
## 关键技术点
1. **进程管理**使用subprocess模块创建和管理服务进程确保进程能够正常启动和停止。
2. **端口管理**:确保每个服务使用唯一的端口,避免端口冲突。
3. **服务包装器**复用现有的服务包装器生成逻辑确保本地部署的服务与Docker部署的服务具有相同的接口。
4. **状态管理**:实现本地进程的状态管理,包括启动、停止、重启等操作。
5. **日志管理**:实现本地进程的日志获取,确保能够查看服务运行日志。
## 预期效果
修改后服务注册管理功能将能够在没有Docker的环境中正常工作用户可以选择使用Docker或本地进程部署服务。