跳转到主要内容

Documentation Index

Fetch the complete documentation index at: https://docs.profy.cn/llms.txt

Use this file to discover all available pages before exploring further.

部署指南

Profy 使用 Docker Compose 进行容器化部署,支持蓝绿发布策略实现零停机更新。生产环境通过 Nginx 反向代理统一入口,提供 SSL 终止和静态资源缓存。

部署架构

Docker Compose

服务组成

服务镜像端口说明
coreprofy-core8080Hono API,依赖 Redis
webprofy-web3000Next.js 前端,依赖 Core
redisredis:7-alpine6379会话存储 / 缓存 / 限流

快速启动

cd deploy/docker
docker compose up -d

多阶段构建

Dockerfile 采用多阶段构建,分离构建和运行环境:
阶段作用
packages-builder构建 @profy/typesdbauthuifetch
core-builder构建 Core API
web-builder构建 Next.js 应用
coreCore 运行镜像 + start-core.sh
webWeb 运行镜像 + start-web.sh
production合并镜像(向后兼容)

启动脚本

start-core.sh
  1. 等待 MySQL 就绪
  2. 执行 drizzle-kit push(数据库迁移)
  3. 启动 Core API
start-web.sh
  1. 等待 Core API 健康检查通过
  2. 启动 Next.js 服务

蓝绿部署

蓝绿部署实现零停机发布,部署脚本位于 deploy/scripts/

发布流程

部署脚本

脚本用途目标
deploy-production.sh生产环境部署app.profy.cn
deploy-test.sh测试环境部署test.profy.cn
关键步骤:
  1. 本地构建 Docker 镜像
  2. 推送到目标服务器
  3. 启动新版本容器(使用备用端口)
  4. 健康检查通过后切换 Nginx 上游
  5. 停止旧版本容器

Nginx 配置

路由规则

server {
    listen 443 ssl;
    server_name app.profy.cn;

    # SSL 配置
    ssl_certificate     /path/to/cert.pem;
    ssl_certificate_key /path/to/key.pem;

    # Next.js 前端
    location / {
        proxy_pass http://127.0.0.1:3000;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }

    # SSE 支持
    location /api/claw/chat {
        proxy_pass http://127.0.0.1:3000;
        proxy_buffering off;
        proxy_cache off;
        proxy_read_timeout 300s;
    }
}

SSE 与 WebSocket

Nginx 需要为 SSE 和 WebSocket 连接做特殊配置:
配置项说明
proxy_buffering off禁用缓冲,确保 SSE 事件实时推送
proxy_cache off禁用缓存
proxy_read_timeout 300s延长读取超时,支持长连接
proxy_set_header UpgradeWebSocket 升级支持

配置同步

deploy/nginx/nginx.sh 将本地 Nginx 配置同步到服务器:
./deploy/nginx/nginx.sh

环境变量

Core API

变量说明示例
DATABASE_URLPostgreSQL 连接字符串postgresql://user:pass@host:5432/profy
REDIS_URLRedis 连接地址redis://localhost:6379
JWT_SECRETJWT 签名密钥随机字符串
S3_ENDPOINTMinIO/S3 端点http://minio:9000
S3_ACCESS_KEYMinIO/S3 访问密钥
S3_SECRET_KEYMinIO/S3 密钥
WECHAT_APP_ID微信支付应用 ID
WECHAT_MCH_ID微信支付商户号
WECHAT_API_KEY微信支付 API 密钥
SMS_API_KEY短信服务密钥

Web 前端

变量说明示例
NEXT_PUBLIC_API_URL公开 API 地址https://app.profy.cn
CORE_API_BASECore API 内部地址http://core:8080

健康检查

端点服务用途
GET /healthCore基础存活检查
GET /api/healthCoreAPI 层健康检查
部署脚本在切换流量前会轮询健康检查端点,确保新版本完全就绪后再接入流量。

声明式 Sandbox(E2B / Docker)

生产默认以 单机 Docker Compose 交付 Core、Web、Redis 等控制面服务。Expert 对话运行在 声明式 Sandbox:本地与自建环境通常对应 Docker 沙箱模板;云上可对接 E2B 等提供商,由 Core 完成创建、健康检查、暂停与销毁。Agent 进程与 SSE 端点位于 Sandbox 内的 Agent Runtimeservices/agent-runtime),不再依赖 Kubernetes Pod 或集群内 Ingress。 对接云沙箱时需配置 Core / Agent Runtime 侧的环境变量与密钥(详见各环境 .env.example 与运维 Runbook)。

Make 命令

命令说明
make deploy-p部署生产环境(Core + Web)
make deploy-p-core仅部署 Core
make deploy-p-web仅部署 Web
make deploy-t部署测试环境
make deploy-n同步 Nginx 配置
make dev本地编排(含 Core、Web、Agent Runtime 等,见 Makefile

相关链接

系统架构

Nginx 路由和双层架构设计

Agent 平台

Expert、Agent Runtime 与 Sandbox 交互