Compare commits
3
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
7d82f3a7b4 | ||
|
|
43a87cf7cc | ||
|
|
b94eb92d5f |
@@ -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
|
||||||
@@ -9,6 +9,10 @@ NUXT_PUBLIC_BASE_APIURL=http://127.0.0.1:3001
|
|||||||
NUXT_PUBLIC_BASE_SOCKETURL=ws://127.0.0.1:3002
|
NUXT_PUBLIC_BASE_SOCKETURL=ws://127.0.0.1:3002
|
||||||
#域名访问使用如下配置,配置为/,并代理/socket.io请求到3002端口
|
#域名访问使用如下配置,配置为/,并代理/socket.io请求到3002端口
|
||||||
#NUXT_PUBLIC_BASE_SOCKETURL=wss://yourwebsite.com/socket.io
|
#NUXT_PUBLIC_BASE_SOCKETURL=wss://yourwebsite.com/socket.io
|
||||||
|
# Agent 服务治理 API 地址,前端管理页面需要。IP访问填http://<IP>:3003,域名访问填/asg-api
|
||||||
|
NUXT_PUBLIC_SG_APIURL=http://127.0.0.1:3003
|
||||||
|
#域名访问使用如下配置,通过nginx代理转发
|
||||||
|
#NUXT_PUBLIC_SG_APIURL=/asg-api
|
||||||
|
|
||||||
#############################################
|
#############################################
|
||||||
#2、以下部分可保持默认,如果没有端口冲突,生产环境可修改密码
|
#2、以下部分可保持默认,如果没有端口冲突,生产环境可修改密码
|
||||||
|
|||||||
@@ -2,6 +2,106 @@
|
|||||||
## 重要更新记录:
|
## 重要更新记录:
|
||||||
|
|
||||||
|
|
||||||
|
### 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 微服务通信。
|
||||||
|
5. **前端新增环境变量**:`.env` 中新增 `NUXT_PUBLIC_SG_APIURL`,用于前端治理管理页面调用 ASG API。
|
||||||
|
|
||||||
|
#### 升级步骤
|
||||||
|
|
||||||
|
**步骤一:更新文件**
|
||||||
|
|
||||||
|
将以下文件更新到最新版本:
|
||||||
|
- `docker-compose.yml`
|
||||||
|
- `easyai-proxy.conf.sample`
|
||||||
|
- `.env.sample`(新增 `NUXT_PUBLIC_SG_APIURL`)
|
||||||
|
|
||||||
|
新增文件复制到部署目录:
|
||||||
|
- `.env.ASG.sample` → 复制为 `.env.ASG` 并根据实际环境修改
|
||||||
|
|
||||||
|
**步骤 1.5:配置 `.env` 新增变量**
|
||||||
|
|
||||||
|
在 `.env` 文件中添加 ASG 前端 API 地址:
|
||||||
|
```dotenv
|
||||||
|
# IP 直接访问方式
|
||||||
|
NUXT_PUBLIC_SG_APIURL=http://<你的服务器IP>:3003
|
||||||
|
# 域名 + Nginx 代理方式(需要配置步骤三的 Nginx 代理)
|
||||||
|
#NUXT_PUBLIC_SG_APIURL=/asg-api
|
||||||
|
```
|
||||||
|
|
||||||
|
**步骤二:配置 `.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
|
||||||
|
|
||||||
|
|||||||
@@ -29,6 +29,8 @@ services:
|
|||||||
# 默认的服务器websocket地址,本地不需要更改,云服务需要修改为云端IP,并放行对应端口
|
# 默认的服务器websocket地址,本地不需要更改,云服务需要修改为云端IP,并放行对应端口
|
||||||
- NUXT_PUBLIC_BASE_SOCKETURL=${NUXT_PUBLIC_BASE_SOCKETURL}
|
- NUXT_PUBLIC_BASE_SOCKETURL=${NUXT_PUBLIC_BASE_SOCKETURL}
|
||||||
- NUXT_APP_CDN_URL=${NUXT_APP_CDN_URL}
|
- NUXT_APP_CDN_URL=${NUXT_APP_CDN_URL}
|
||||||
|
# Agent 服务治理 API 地址(前端直接调用,走 Nginx 代理时配置为 /asg-api)
|
||||||
|
- NUXT_PUBLIC_SG_APIURL=${NUXT_PUBLIC_SG_APIURL}
|
||||||
# 日志大小设置,避免日志文件过大
|
# 日志大小设置,避免日志文件过大
|
||||||
env_file:
|
env_file:
|
||||||
- .env
|
- .env
|
||||||
@@ -103,6 +105,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 +330,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} -d ${ASG_POSTGRES_DB:-agent_governance}"]
|
||||||
|
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:
|
||||||
|
easyai-asg-pg:
|
||||||
|
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 +428,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;
|
||||||
|
|||||||
Reference in New Issue
Block a user