部署运维

📎 引用文件

本文引用的文件 - Dockerfile - docker-compose.yml - agent/api_server.py - agent/mcp_server.py - agent/src/config/env_schema.py - agent/src/config/loader.py

目录

  1. 简介
  2. 项目结构
  3. 核心组件
  4. 架构总览
  5. 详细组件分析
  6. 依赖关系分析
  7. 性能与资源限制
  8. 监控、健康检查与日志
  9. 生产环境配置与最佳实践
  10. CI/CD 集成
  11. 故障排查指南
  12. 结论

简介

本文件面向 Vibe-Trading 的容器化部署与运维,覆盖镜像构建(多阶段优化)、环境变量配置、健康检查、生产与负载均衡、监控告警、日志收集、备份恢复、CI/CD 集成以及常见问题处理。文档基于仓库中的 Dockerfile、docker-compose、API 服务入口与环境配置模型等实际代码进行说明,并提供可操作的部署示例与最佳实践。

项目结构

Vibe-Trading 采用前后端分离:前端通过 Node 构建静态资源,后端以 Python FastAPI 提供 REST/MCP 能力;运行时由 Docker 容器承载,Compose 编排数据卷与安全加固。

graph TB A["客户端浏览器/调用方"] --> B["Nginx/反向代理(可选)"] B --> C["vibe-trading 容器<br/>FastAPI + 静态前端"] C --> D["持久化卷<br/>runs/sessions/uploads/.swarm/runs/home/vibe/.vibe-trading"] C --> E["外部依赖(可选)<br/>Ollama/券商网关/数据源"]

图表来源 - Dockerfile:48-107 - docker-compose.yml:1-66

章节来源 - Dockerfile:4-107 - docker-compose.yml:1-66

核心组件

章节来源 - Dockerfile:4-107 - agent/api_server.py:163-183 - agent/api_server.py:321-395 - agent/mcp_server.py:69-316 - agent/src/config/env_schema.py:122-577 - agent/src/config/loader.py:28-151

架构总览

下图展示容器内外的关键交互:客户端经反向代理访问 API,API 服务启动时执行预检并挂载前端静态资源;MCP 服务可作为独立进程或嵌入使用;数据通过命名卷持久化。

sequenceDiagram participant U as "用户/客户端" participant RP as "反向代理(可选)" participant API as "FastAPI 服务" participant FS as "文件系统(卷)" participant MCP as "MCP 服务(可选)" participant EXT as "外部依赖(Ollama/券商/数据源)" U->>RP : HTTP 请求 RP->>API : 转发到 /live, /health, 业务路由 API->>API : 启动预检/路由注册/静态资源挂载 API->>FS : 读写 runs/sessions/uploads/... API-->>U : 响应(含前端静态资源) U->>MCP : 连接(stdio/SSE/HTTP) MCP->>EXT : 调用数据/LLM/券商接口 MCP-->>U : 工具结果/流式事件

图表来源 - Dockerfile:99-107 - agent/api_server.py:127-183 - agent/api_server.py:321-395 - agent/mcp_server.py:69-316 - docker-compose.yml:20-66

详细组件分析

容器镜像与多阶段构建

flowchart TD S["开始构建"] --> F1["阶段1: 前端构建"] F1 --> F2["阶段2: Python 依赖编译与venv打包"] F2 --> F3["阶段3: 最小化运行时镜像"] F3 --> P["发布镜像"]

图表来源 - Dockerfile:4-107

章节来源 - Dockerfile:4-107

API 服务启动流程

sequenceDiagram participant CLI as "CLI/Compose" participant API as "FastAPI" participant CFG as "配置加载" participant RT as "运行时(调度/通道)" participant FS as "文件系统" CLI->>API : 启动 serve --host --port API->>CFG : 读取环境变量/配置 API->>API : 注册中间件/路由 API->>RT : 启动定时研究与通道(条件) API->>FS : 挂载前端静态资源 API-->>CLI : 监听端口

图表来源 - agent/api_server.py:127-183 - agent/api_server.py:321-395

章节来源 - agent/api_server.py:127-183 - agent/api_server.py:321-395

MCP 服务与网络安全

classDiagram class MCPServer { +http_app(transport, middleware) +tool(...) +_security_middleware(allowed_hosts) } class HostGuardMiddleware { +__call__(scope, receive, send) } class OriginGuardMiddleware { +__call__(scope, receive, send) } MCPServer --> HostGuardMiddleware : "包装" MCPServer --> OriginGuardMiddleware : "包装"

图表来源 - agent/mcp_server.py:142-316

章节来源 - agent/mcp_server.py:69-316

环境变量与配置体系

flowchart TD E["环境变量"] --> S["EnvConfig 解析"] S --> R["运行时配置对象"] R --> API["API/MCP/Agent 使用"] D["磁盘配置(JSON/YAML)"] --> L["加载与合并"] L --> R

图表来源 - agent/src/config/env_schema.py:122-577 - agent/src/config/loader.py:28-151

章节来源 - agent/src/config/env_schema.py:122-577 - agent/src/config/loader.py:28-151

依赖关系分析

graph LR N["Node(前端)"] --> B["Python venv(依赖)"] B --> A["FastAPI 服务"] B --> M["MCP 服务"] A --> V["命名卷(持久化)"] M --> V A --> O["外部依赖(Ollama/券商/数据源)"] M --> O

图表来源 - Dockerfile:4-107 - docker-compose.yml:20-66

章节来源 - Dockerfile:4-107 - docker-compose.yml:20-66

性能与资源限制

章节来源 - docker-compose.yml:40-66 - Dockerfile:62-75 - agent/src/config/env_schema.py:323-378

监控、健康检查与日志

sequenceDiagram participant Orchestrator as "编排平台/健康检查" participant Container as "vibe-trading 容器" participant API as "FastAPI" Orchestrator->>Container : GET /live (每30秒) Container->>API : 转发到 /live API-->>Orchestrator : 200 OK / 失败

图表来源 - Dockerfile:102-104 - agent/api_server.py:163-183

章节来源 - Dockerfile:102-104 - agent/api_server.py:384-390

生产环境配置与最佳实践

章节来源 - docker-compose.yml:20-66 - agent/src/config/env_schema.py:245-295 - Dockerfile:88-97

CI/CD 集成

[本节为通用实践说明,不直接分析具体文件]

故障排查指南

章节来源 - docker-compose.yml:11-19 - agent/api_server.py:349-354 - Dockerfile:62-75 - agent/mcp_server.py:93-127

结论

Vibe-Trading 提供了完善的容器化与生产就绪能力:多阶段构建最小化镜像、严格的安全加固、集中化的环境变量与配置体系、健壮的健康检查与日志脱敏、以及可扩展的 MCP 工具生态。结合反向代理、负载均衡、监控告警与备份恢复策略,可在生产环境中稳定运行并持续演进。