feat: 集成 Agent 服务治理(ASG)部署配置

- 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
This commit is contained in:
wangbo 2026-03-02 11:31:55 +08:00
parent 22583422e1
commit b94eb92d5f
4 changed files with 202 additions and 0 deletions

43
.env.ASG.sample Normal file
View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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;