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:
parent
22583422e1
commit
b94eb92d5f
43
.env.ASG.sample
Normal file
43
.env.ASG.sample
Normal 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
|
||||||
88
README.md
88
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
|
### 2025.2.4
|
||||||
|
|
||||||
|
|||||||
@ -103,6 +103,9 @@ services:
|
|||||||
- CONFIG_VIDEO_EDIT_API_URL=http://video-edit:8000
|
- CONFIG_VIDEO_EDIT_API_URL=http://video-edit:8000
|
||||||
# 沙箱环境baseURL
|
# 沙箱环境baseURL
|
||||||
- SANDBOX_SERVICE_BASE_URL=${SANDBOX_SERVICE_BASE_URL:-http://sandbox:8000}
|
- SANDBOX_SERVICE_BASE_URL=${SANDBOX_SERVICE_BASE_URL:-http://sandbox:8000}
|
||||||
|
# 服务治理 TCP 连接
|
||||||
|
- ASG_TCP_HOST=easyai-asg
|
||||||
|
- ASG_TCP_PORT=4003
|
||||||
# 日志大小设置,避免日志文件过大
|
# 日志大小设置,避免日志文件过大
|
||||||
env_file:
|
env_file:
|
||||||
- .env
|
- .env
|
||||||
@ -325,6 +328,61 @@ services:
|
|||||||
timeout: 10s
|
timeout: 10s
|
||||||
retries: 3
|
retries: 3
|
||||||
start_period: 10s
|
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:
|
# portainer:
|
||||||
# image: registry.cn-shanghai.aliyuncs.com/comfy-ai/portainer-ce:2.21.5
|
# image: registry.cn-shanghai.aliyuncs.com/comfy-ai/portainer-ce:2.21.5
|
||||||
# container_name: portainer
|
# container_name: portainer
|
||||||
@ -368,6 +426,7 @@ volumes:
|
|||||||
mongo_data:
|
mongo_data:
|
||||||
portainer_data:
|
portainer_data:
|
||||||
rabbitmq_data:
|
rabbitmq_data:
|
||||||
|
asg_postgres_data:
|
||||||
networks:
|
networks:
|
||||||
comfyai:
|
comfyai:
|
||||||
driver: bridge
|
driver: bridge
|
||||||
|
|||||||
@ -79,6 +79,18 @@ server {
|
|||||||
proxy_set_header Host $host;
|
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/ {
|
location /plugins/ {
|
||||||
proxy_pass http://127.0.0.1:3020/plugins/;
|
proxy_pass http://127.0.0.1:3020/plugins/;
|
||||||
proxy_redirect off;
|
proxy_redirect off;
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user