From b94eb92d5f936039c8d67ee2d6b8b4d3f55610b4 Mon Sep 17 00:00:00 2001 From: wangbo Date: Mon, 2 Mar 2026 11:31:55 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E9=9B=86=E6=88=90=20Agent=20=E6=9C=8D?= =?UTF-8?q?=E5=8A=A1=E6=B2=BB=E7=90=86(ASG)=E9=83=A8=E7=BD=B2=E9=85=8D?= =?UTF-8?q?=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - docker-compose.yml 新增 easyai-asg-pg 和 easyai-asg 容器,comfy-server 增加 ASG TCP 连接环境变量 - 新增 .env.ASG.sample 环境变量模板,地址统一使用容器服务名替代固定 IP - easyai-proxy.conf.sample 新增 /asg-api/ 反向代理配置 - README.md 新增 2026.3.2 更新记录及完整升级步骤 Made-with: Cursor --- .env.ASG.sample | 43 ++++++++++++++++++++ README.md | 88 ++++++++++++++++++++++++++++++++++++++++ docker-compose.yml | 59 +++++++++++++++++++++++++++ easyai-proxy.conf.sample | 12 ++++++ 4 files changed, 202 insertions(+) create mode 100644 .env.ASG.sample diff --git a/.env.ASG.sample b/.env.ASG.sample new file mode 100644 index 0000000..a9a91ec --- /dev/null +++ b/.env.ASG.sample @@ -0,0 +1,43 @@ +# ============================================ +# Agent 服务治理(service-governance)环境变量 +# 使用前请复制为 .env.ASG 并根据实际情况修改 +# ============================================ + +# ---------- PostgreSQL ---------- +# Prisma 数据库连接字符串(容器内网地址) +ASG_DATABASE_URL=postgresql://easyai:easyai2025@easyai-asg-pg:5432/agent_governance?schema=public + +# PostgreSQL 容器初始化配置(与 docker-compose 中 sg-postgres 保持一致) +ASG_POSTGRES_USER=easyai +ASG_POSTGRES_PASSWORD=easyai2025 +ASG_POSTGRES_DB=agent_governance + +# ---------- Redis ---------- +# 复用主服务的 Redis 实例,使用独立 DB 隔离数据 +ASG_REDIS_HOST=redis +ASG_REDIS_PORT=6379 +ASG_REDIS_PASSWORD= +ASG_REDIS_DB=8 + +# ---------- 服务端口 ---------- +# HTTP API 端口 +ASG_PORT=3003 +# TCP 微服务端口(供 comfy-server 内部调用) +ASG_TCP_PORT=4003 +ASG_TCP_HOST=0.0.0.0 + +# ---------- 主服务连接 ---------- +# Agent 调用时需要访问的 comfy-server 地址(容器内网地址) +ASG_MAIN_BACKEND_URL=http://comfy-server:3001 +# 管理员账号(用于 Agent 登录获取 token) +ASG_ADMIN_USERNAME=admin +ASG_ADMIN_PASSWORD=123456 + +# ---------- 其他 ---------- +# 日志级别 +LOG_LEVEL=log,error,warn,debug +# 是否禁用 Swagger 文档(true 禁用) +ASG_DOCS_DISABLE=false + +# 服务治理镜像版本 +ASG_VERSION=latest diff --git a/README.md b/README.md index 4cd1ba9..0228931 100644 --- a/README.md +++ b/README.md @@ -2,6 +2,94 @@ ## 重要更新记录: +### 2026.3.2 + +1. **新增 Agent 服务治理(ASG)模块**:新增 `easyai-asg`(Agent 服务治理)容器和独立的 `easyai-asg-pg`(PostgreSQL 18)数据库容器,用于支持 Agent 自动化治理能力。 +2. **新增 Nginx 反向代理**:在 `easyai-proxy.conf.sample` 中新增 `/asg-api/` 路径代理,用于暴露 ASG 服务的 REST API。 +3. **新增环境变量文件**:新增 `.env.ASG.sample` 文件,包含 ASG 服务所需的全部环境变量。 +4. 主服务 `comfy-server` 新增 `ASG_TCP_HOST` 和 `ASG_TCP_PORT` 环境变量,用于内部 TCP 微服务通信。 + +#### 升级步骤 + +**步骤一:更新文件** + +将以下文件更新到最新版本: +- `docker-compose.yml` +- `easyai-proxy.conf.sample` + +新增文件复制到部署目录: +- `.env.ASG.sample` → 复制为 `.env.ASG` 并根据实际环境修改 + +**步骤二:配置 `.env.ASG`** + +```bash +cp .env.ASG.sample .env.ASG +``` + +根据实际环境修改 `.env.ASG` 中的关键配置: +```dotenv +# PostgreSQL 连接(默认使用容器内网地址,一般无需修改) +ASG_DATABASE_URL=postgresql://easyai:easyai2025@easyai-asg-pg:5432/agent_governance?schema=public +ASG_POSTGRES_USER=easyai +ASG_POSTGRES_PASSWORD=easyai2025 + +# Redis(复用主服务 Redis,使用独立 DB 隔离) +ASG_REDIS_HOST=redis +ASG_REDIS_PASSWORD= # 与主服务 Redis 密码保持一致 + +# 主服务连接地址(容器内网地址) +ASG_MAIN_BACKEND_URL=http://comfy-server:3001 +# 管理员账号(用于 Agent 调用时登录获取 token) +ASG_ADMIN_USERNAME=admin +ASG_ADMIN_PASSWORD=123456 +``` + +**步骤三:可选,更新 Nginx 配置,暴露创建任务治理相关接口,如果你希望通过外部接口发送Agent治理任务才需要配置** + +在 nginx 配置文件(`/etc/nginx/conf.d/easyai-proxy.conf`)中添加 ASG API 代理,具体位置参考 `easyai-proxy.conf.sample`: +```nginx + location /asg-api/ { + proxy_pass http://127.0.0.1:3003/; + proxy_read_timeout 300s; + client_max_body_size 20M; + proxy_redirect off; + proxy_set_header X-Original-Prefix '/asg-api'; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto $scheme; + proxy_set_header Host $host; + } +``` + +添加后重载 Nginx: +```bash +nginx -t && nginx -s reload +``` + +**步骤四:启动服务** + +```bash +cd ~/easyai +docker compose up -d +``` + +新增容器:`easyai-asg-pg`(PostgreSQL)和 `easyai-asg`(Agent 服务治理),数据库会在首次启动时自动完成初始化和迁移。 + +**步骤五:验证** + +```bash +# 检查容器状态 +docker compose ps easyai-asg-pg easyai-asg + +# 检查 ASG 服务健康状态 +curl http://127.0.0.1:3003/health + +# 通过 Nginx 代理访问(配置 Nginx 后) +curl https://<你的域名>/asg-api/health +``` + +> **注意**:如果不需要 Agent 服务治理功能,可以不执行以上步骤,不影响主服务正常运行。需要开放 3003 端口(或通过 Nginx 代理访问)。 + ### 2025.2.4 diff --git a/docker-compose.yml b/docker-compose.yml index 46562d7..9e0310e 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -103,6 +103,9 @@ services: - CONFIG_VIDEO_EDIT_API_URL=http://video-edit:8000 # 沙箱环境baseURL - SANDBOX_SERVICE_BASE_URL=${SANDBOX_SERVICE_BASE_URL:-http://sandbox:8000} + # 服务治理 TCP 连接 + - ASG_TCP_HOST=easyai-asg + - ASG_TCP_PORT=4003 # 日志大小设置,避免日志文件过大 env_file: - .env @@ -325,6 +328,61 @@ services: timeout: 10s retries: 3 start_period: 10s + easyai-asg-pg: + image: registry.cn-shanghai.aliyuncs.com/easyaigc/postgres:18-alpine + container_name: easyai-asg-pg + restart: unless-stopped + environment: + POSTGRES_USER: ${ASG_POSTGRES_USER:-easyai} + POSTGRES_PASSWORD: ${ASG_POSTGRES_PASSWORD:-easyai2025} + POSTGRES_DB: ${ASG_POSTGRES_DB:-agent_governance} + volumes: + - asg_postgres_data:/var/lib/postgresql/data + networks: + comfyai: + ipv4_address: 172.21.0.13 + healthcheck: + test: ["CMD-SHELL", "pg_isready -U ${ASG_POSTGRES_USER:-easyai}"] + interval: 10s + timeout: 5s + retries: 5 + start_period: 30s + logging: + driver: "json-file" + options: + max-size: "100m" + max-file: "10" + easyai-asg: + container_name: easyai-asg + image: registry.cn-shanghai.aliyuncs.com/easyaigc/agent-governance:${ASG_VERSION:-latest} + labels: + - "com.centurylinklabs.watchtower.enable=true" + ports: + - "${ASG_PORT:-3003}:3003" + networks: + comfyai: + ipv4_address: 172.21.0.14 + depends_on: + sg-postgres: + condition: service_healthy + redis: + condition: service_started + volumes: + - ./data/easyai-asg/.pm2:/app/.pm2 + restart: unless-stopped + env_file: + - .env.ASG + logging: + driver: "json-file" + options: + max-size: "100m" + max-file: "10" + deploy: + resources: + limits: + memory: 512MB + reservations: + memory: 128MB # portainer: # image: registry.cn-shanghai.aliyuncs.com/comfy-ai/portainer-ce:2.21.5 # container_name: portainer @@ -368,6 +426,7 @@ volumes: mongo_data: portainer_data: rabbitmq_data: + asg_postgres_data: networks: comfyai: driver: bridge diff --git a/easyai-proxy.conf.sample b/easyai-proxy.conf.sample index 0fcf700..33fab36 100644 --- a/easyai-proxy.conf.sample +++ b/easyai-proxy.conf.sample @@ -79,6 +79,18 @@ server { proxy_set_header Host $host; } + location /asg-api/ { + proxy_pass http://127.0.0.1:3003/; + proxy_read_timeout 300s; + client_max_body_size 20M; + proxy_redirect off; + proxy_set_header X-Original-Prefix '/asg-api'; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto $scheme; + proxy_set_header Host $host; + } + location /plugins/ { proxy_pass http://127.0.0.1:3020/plugins/; proxy_redirect off;