diff --git a/.env.comfyAI-web-init.sample b/.env.comfyAI-web-init.sample new file mode 100644 index 0000000..79ba1d9 --- /dev/null +++ b/.env.comfyAI-web-init.sample @@ -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 diff --git a/docker-compose.yml b/docker-compose.yml index 0e2edde..04cb412 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -2,6 +2,31 @@ # (各项参数均有详细的说明,理论情况下保持默认即可运行) #version: '3' 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: container_name: comfyAI-web #更新修改冒号后面的版本号 @@ -15,11 +40,15 @@ services: volumes: # 这一行是关键。它将一个名为 './data/forend/.pm2' 的持久化卷挂载到容器内的 /app/.pm2 目录 - ./data/forend/.pm2:/app/.pm2 + - ./data/cdn-init:/tmp/cdn-init:ro networks: comfyai: ipv4_address: 172.21.0.8 depends_on: - - comfy-server + comfy-server: + condition: service_started + comfyAI-web-init: + condition: service_healthy restart: unless-stopped environment: # 默认服务器地址,本地不需要更改,云服务需要修改为云端IP,并放行对应端口