生产环境配置

📎 引用文件

本文引用的文件 - Dockerfile - docker-compose.yml - pyproject.toml - agent/api_server.py - agent/src/config/env_schema.py - agent/src/config/loader.py - agent/src/config/paths.py - agent/src/api/security.py

目录

  1. 简介
  2. 项目结构
  3. 核心组件
  4. 架构总览
  5. 详细组件分析
  6. 依赖关系分析
  7. 性能与资源规划
  8. 故障排查指南
  9. 结论
  10. 附录:云平台部署要点

简介

本文件面向生产环境,系统化说明 Vibe-Trading 的系统要求、资源规划、网络与安全配置、环境变量管理策略、反向代理与 TLS 建议、进程管理与监控、以及在不同云平台的部署注意事项。内容严格基于仓库中的 Dockerfile、Compose 配置、API 服务入口与安全模块、以及集中式环境变量 Schema 实现。

项目结构

Vibe-Trading 的生产镜像采用多阶段构建:前端静态资源由 Node 构建,Python 依赖在独立 venv 中预编译并复制到最小化运行时镜像;容器默认以非 root 用户运行,暴露 8899 端口并提供健康检查。Compose 编排了 API 服务与可选的前端开发服务,并通过命名卷持久化会话、运行产物、上传文件与用户数据。

graph TB A["Dockerfile<br/>多阶段构建"] --> B["运行时镜像<br/>Python 3.11 slim + 预装库"] C["docker-compose.yml<br/>服务编排"] --> D["vibe-trading 服务<br/>端口 8899 / 健康检查"] C --> E["frontend 服务(可选)<br/>端口 5899"] D --> F["命名卷<br/>runs/sessions/uploads/home/.vibe-trading"] D --> G["只读根文件系统 + tmpfs<br/>/tmp, .cache, .config"]

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

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

核心组件

章节来源 - agent/api_server.py:163-183 - agent/src/config/env_schema.py:545-577 - agent/src/api/security.py:147-158 - docker-compose.yml:40-66

架构总览

下图展示生产环境下请求从外部进入,经反向代理(建议)到 API 服务,再到后端业务逻辑与数据层的流程。

sequenceDiagram participant Client as "客户端" participant Proxy as "反向代理/TLS终止" participant API as "FastAPI/Uvicorn" participant Sec as "安全中间件" participant Biz as "业务路由" participant Store as "持久化存储(卷)" Client->>Proxy : HTTPS 请求 Proxy->>API : HTTP 转发(可带 Host/Origin) API->>Sec : CORS/CSP/鉴权校验 Sec-->>API : 通过或拒绝 API->>Biz : 路由处理 Biz->>Store : 读写会话/运行产物/上传 Biz-->>API : 响应数据 API-->>Proxy : HTTP 响应 Proxy-->>Client : HTTPS 响应

图示来源 - agent/api_server.py:173-183 - agent/src/api/security.py:166-173 - docker-compose.yml:20-39

详细组件分析

环境变量与配置管理

flowchart TD Start(["启动"]) --> LoadEnv["读取环境变量<br/>Pydantic 校验"] LoadEnv --> LoadFile{"存在结构化配置?"} LoadFile -- 否 --> UseEnv["使用环境变量+默认值"] LoadFile -- 是 --> Merge["合并基础配置与覆盖项"] Merge --> Validate["最终验证"] UseEnv --> Validate Validate --> Ready["配置就绪"]

图示来源 - agent/src/config/env_schema.py:71-114 - agent/src/config/env_schema.py:545-577 - agent/src/config/loader.py:28-55 - agent/src/config/loader.py:57-100

章节来源 - agent/src/config/env_schema.py:122-197 - agent/src/config/env_schema.py:245-295 - agent/src/config/loader.py:107-134 - agent/src/config/loader.py:137-151 - agent/src/config/paths.py:13-34

安全与鉴权

classDiagram class Security { +_parse_cors_origins() +_apply_security_headers() +_reject_untrusted_loopback_host() +_validate_api_auth() +require_auth() +require_event_stream_auth() } class EnvConfig { +api.cors_origins +api.vibe_trading_extra_cors_origins +api.api_allowed_hosts +api.api_auth_key +api.vibe_trading_csp_report_only } Security --> EnvConfig : "读取配置"

图示来源 - agent/src/api/security.py:69-103 - agent/src/api/security.py:166-173 - agent/src/api/security.py:235-253 - agent/src/api/security.py:347-366 - agent/src/api/security.py:463-504 - agent/src/config/env_schema.py:245-295

章节来源 - agent/src/api/security.py:147-158 - agent/src/api/security.py:235-253 - agent/src/api/security.py:300-341 - agent/src/api/security.py:463-504

进程管理与资源限制

flowchart TD Boot["容器启动"] --> User["切换到非root用户"] User --> FS["只读根文件系统 + tmpfs"] FS --> Limits["设置CPU/内存/PID限制"] Limits --> Health["注册健康检查 /live"] Health --> Run["运行 API 服务"]

图示来源 - Dockerfile:88-107 - docker-compose.yml:40-66

章节来源 - Dockerfile:88-107 - docker-compose.yml:40-66

数据持久化与缓存

章节来源 - docker-compose.yml:20-39 - agent/src/config/env_schema.py:185-187

会话管理与通道

章节来源 - agent/api_server.py:127-160 - agent/src/config/env_schema.py:363-365 - agent/src/api/security.py:640-656

依赖关系分析

graph LR A["Node 22<br/>构建前端"] --> B["静态资源 dist"] C["Python 3.11 slim<br/>builder"] --> D["预编译 venv"] D --> E["运行时镜像<br/>复制 venv + dist"] E --> F["Uvicorn/FastAPI 服务"]

图示来源 - Dockerfile:4-11 - Dockerfile:17-43 - Dockerfile:48-86

章节来源 - Dockerfile:17-43 - Dockerfile:48-86 - pyproject.toml:24-69

性能与资源规划

章节来源 - docker-compose.yml:61-66 - Dockerfile:102-107 - Dockerfile:48-75

故障排查指南

章节来源 - agent/api_server.py:349-354 - agent/src/api/security.py:166-173 - Dockerfile:102-107 - docker-compose.yml:88-97 - agent/src/api/security.py:272-297

结论

Vibe-Trading 在生产环境中通过多阶段镜像、最小化运行时、严格的容器安全策略、集中式环境变量与结构化配置、以及完善的安全中间件,提供了高可用、易运维的基础设施。结合合理的反向代理与 TLS 终止、资源限制与健康检查,可满足大多数企业级部署需求。

附录:云平台部署要点

[本节为通用指导,不直接分析具体代码文件]