feat(comfyAI-web-init): 新增comfyAI-web 初始化容器,实现支持开启 CDN 功能,支持将前端静态资源上传至OSS中,每次在线更新的时候会触发该容器运行上传静态资源

This commit is contained in:
chengcheng 2026-03-04 11:00:33 +08:00
parent e79d74740f
commit 43f9bb5703
2 changed files with 101 additions and 1 deletions

View File

@ -0,0 +1,71 @@
# =============================================================================
# ComfyAI Web 静态资源 CDN 初始化配置
# 用于 comfyAI-web-init 容器:构建后上传前端静态资源到 OSS/CDN
# 部署时请根据实际使用的 OSS 服务商填写对应配置
# =============================================================================
# -----------------------------------------------------------------------------
# 基础开关与路径
# -----------------------------------------------------------------------------
# 是否启用静态资源 CDN 加速
# true: 构建完成后将静态资源上传至 OSS前端通过 CDN 地址加载
# false: 不启用,静态资源随应用一起部署(不推荐生产环境)
STATIC_CDN_ENABLED=true
# 前端静态资源在 OSS 中的根目录(桶内路径前缀)
# 例如: static / frontend-assets
# 与 STATIC_CDN_BASE_URL 末尾路径保持一致,用于上传时的目录划分
STATIC_CDN_ROOT_PATH=static
# 静态资源的完整访问基础 URL不含末尾斜杠
# 用户访问前端时加载 JS/CSS/图片的根地址
# 示例: https://cdn.example.com/static 或 http://minio.example.com:9000/bucket/frontend-assets
STATIC_CDN_BASE_URL=https://cdn.example.com/static
# -----------------------------------------------------------------------------
# OSS 服务商与连接配置
# -----------------------------------------------------------------------------
# OSS 服务商类型(小写)
# 可选: aliyun | tencent | minio | qiniu | s3Compatible
# aliyun=阿里云 OSS, tencent=腾讯云 COS, minio=MinIO, qiniu=七牛云, s3Compatible=兼容 S3 的存储
STATIC_CDN_OSS_PROVIDER=aliyun
# OSS 服务端点Endpoint
# 阿里云: oss-cn-shanghai.aliyuncs.com
# 腾讯云: cos.ap-guangzhou.myqcloud.com
# MinIO: minio.example.com 或 宿主机访问容器时用 host.docker.internal
# 七牛: 无需填写 endpoint使用 region
STATIC_CDN_OSS_ENDPOINT=oss-cn-shanghai.aliyuncs.com
# OSS 存储桶名称Bucket
# 需提前在对应云控制台或 MinIO 中创建好
STATIC_CDN_OSS_BUCKET=your_bucket
# OSS Access Key ID访问密钥 ID
STATIC_CDN_OSS_ACCESS_KEY=your_access_key_id
# OSS Secret Access Key访问密钥 Secret
# 请勿提交到版本库,生产环境建议使用密钥管理服务
STATIC_CDN_OSS_SECRET_KEY=your_secret_access_key
# OSS 区域Region部分服务商必填
# 阿里云: oss-cn-shanghai
# 腾讯云: ap-guangzhou
# MinIO/自建: 可留空或填 us-east-1
# 七牛: 如 z0华东
STATIC_CDN_OSS_REGION=oss-cn-shanghai
# 自定义域名(可选)
# 若通过自有域名访问 OSS如 cdn.example.com在此填写否则留空将使用 endpoint + bucket 生成地址
STATIC_CDN_OSS_DOMAIN=
# OSS 服务端口(可选)
# 非标准端口时填写,如 MinIO 默认 9000标准 80/443 可留空
STATIC_CDN_OSS_PORT=
# 连接 OSS 时是否使用 HTTPS
# true: 使用 https生产推荐
# false: 使用 http本地 MinIO 调试时可设为 false
STATIC_CDN_OSS_USE_SSL=true

View File

@ -2,6 +2,31 @@
# (各项参数均有详细的说明,理论情况下保持默认即可运行) # (各项参数均有详细的说明,理论情况下保持默认即可运行)
#version: '3' #version: '3'
services: services:
comfyAI-web-init:
container_name: comfyAI-web-init
image: registry.cn-shanghai.aliyuncs.com/comfy-ai/one-ai:${VERSION}
labels:
- "com.centurylinklabs.watchtower.enable=true"
entrypoint: [ "sh", "-c", "node .output/scripts/static-upload-init.mjs && touch /tmp/init-done && exec sleep infinity" ]
restart: unless-stopped
healthcheck:
test: [ "CMD", "test", "-f", "/tmp/init-done" ]
interval: 5s
timeout: 3s
retries: 60
start_period: 120s
networks:
comfyai:
ipv4_address: 172.21.0.15
volumes:
- ./data/cdn-init:/tmp/cdn-init
env_file:
- .env.comfyAI-web-init
logging:
driver: "json-file"
options:
max-size: "50m"
max-file: "5"
comfyAI-web: comfyAI-web:
container_name: comfyAI-web container_name: comfyAI-web
#更新修改冒号后面的版本号 #更新修改冒号后面的版本号
@ -15,11 +40,15 @@ services:
volumes: volumes:
# 这一行是关键。它将一个名为 './data/forend/.pm2' 的持久化卷挂载到容器内的 /app/.pm2 目录 # 这一行是关键。它将一个名为 './data/forend/.pm2' 的持久化卷挂载到容器内的 /app/.pm2 目录
- ./data/forend/.pm2:/app/.pm2 - ./data/forend/.pm2:/app/.pm2
- ./data/cdn-init:/tmp/cdn-init:ro
networks: networks:
comfyai: comfyai:
ipv4_address: 172.21.0.8 ipv4_address: 172.21.0.8
depends_on: depends_on:
- comfy-server comfy-server:
condition: service_started
comfyAI-web-init:
condition: service_healthy
restart: unless-stopped restart: unless-stopped
environment: environment:
# 默认服务器地址本地不需要更改云服务需要修改为云端IP并放行对应端口 # 默认服务器地址本地不需要更改云服务需要修改为云端IP并放行对应端口