easyai/docker-compose.yml
2025-05-08 11:15:26 +08:00

225 lines
7.7 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 非 host 版本, 容器内部使用桥接通信
# (各项参数均有详细的说明,理论情况下保持默认即可运行)
#version: '3'
services:
comfyAI-web:
container_name: comfyAI-web
#更新修改冒号后面的版本号
image: registry.cn-shanghai.aliyuncs.com/comfy-ai/one-ai:${VERSION}
#端口冲突时只需要修改前面的端口比如修改为3011:3010
labels:
- "com.centurylinklabs.watchtower.enable=true"
ports:
- "${WEB_PORT}:3010"
read_only: true
networks:
comfyai:
ipv4_address: 172.21.0.8
depends_on:
- comfy-server
restart: always
environment:
# 默认服务器地址本地不需要更改云服务需要修改为云端IP并放行对应端口
- NUXT_PUBLIC_BASE_APIURL=${NUXT_PUBLIC_BASE_APIURL}
#增加服务端渲染配置,保持默认即可,不需要修改!
- NUXT_PUBLIC_BASE_SSRURL=http://172.21.0.6:3001
# 默认的服务器websocket地址本地不需要更改云服务需要修改为云端IP并放行对应端口
- NUXT_PUBLIC_BASE_SOCKETURL=${NUXT_PUBLIC_BASE_SOCKETURL}
#MCP server 地址
- NUXT_PUBLIC_BASE_MCPSOCKETSERVER=${NUXT_PUBLIC_BASE_MCPSOCKETSERVER}
# 日志大小设置,避免日志文件过大
logging:
driver: "json-file"
options:
max-size: "100m"
max-file: "10"
comfy-server:
container_name: comfy-server
# 阿里云镜像地址
image: registry.cn-shanghai.aliyuncs.com/comfy-ai/comfy-server:${VERSION} # 阿里云
labels:
- "com.centurylinklabs.watchtower.enable=true"
ports:
- "${SERVER_HTTP_PORT}:3001" #http端口
- "${SERVER_WS_PORT}:3002" #websocket端口
- "${CONFIG_WS_MCP_PORT}:3012"
read_only: true
networks:
comfyai:
ipv4_address: 172.21.0.6
depends_on:
- mongo
- redis
restart: always
environment:
# MongoDB配置用户管理不会配置的话保持默认即可
- CONFIG_DB_MONGO_URI=mongodb://172.21.0.3:27017
- CONFIG_DB_MONGO_USERNAME=${MONGO_INITDB_ROOT_USERNAME}
- CONFIG_DB_MONGO_PASSWORD=${MONGO_INITDB_ROOT_PASSWORD}
# Redis配置队列缓存不会配置的话保持默认即可
- CONFIG_COMFYUI_QUENE_REDIS_HOST=172.21.0.4
- CONFIG_COMFYUI_QUENE_REDIS_PORT=6379
- CONFIG_COMFYUI_QUENE_REDIS_PASSWORD=
#One API 路径,自动注册大模型账号
- CONFIG_ONEAPIURL=http://172.21.0.5:3000
#日志与调试
- LOG_LEVEL=${LOG_LEVEL}
#Token过期时间单位秒
- CONFIG_TOKEN_EXPIRE=${CONFIG_TOKEN_EXPIRE}
- CONFIG_JWT_SECRET=${CONFIG_JWT_SECRET}
# 代理服务器
- CONFIG_PROXY_URL=${CONFIG_PROXY_URL}
# 日志大小设置,避免日志文件过大
logging:
driver: "json-file"
options:
max-size: "100m"
max-file: "10"
# 使用大语言模型的后端接口
new-api:
# image: calciumion/new-api:latest # 原版镜像地址
image: registry.cn-shanghai.aliyuncs.com/easyaigc/new-api:latest #阿里云中转加速
container_name: new-api
restart: always
command: --log-dir /app/logs
ports:
- "${ONEAPI_PORT}:3000"
networks:
comfyai:
ipv4_address: 172.21.0.5
volumes:
- newapi_data:/data
- ./new-api-logs:/app/logs
environment:
- SQL_DSN=${MYSQL_USER}:${MYSQL_USER_PASSWORD}@tcp(172.21.0.7:3306)/new-api # 指向mysql服务
- REDIS_CONN_STRING=redis://redis
- TZ=Asia/Shanghai
# - SESSION_SECRET=random_string # 多机部署时设置,必须修改这个随机字符串!!!!!!!
# - NODE_TYPE=slave # 多机部署的从节点取消注释
# - SYNC_FREQUENCY=60 # 如需定期同步数据库,取消注释
# - FRONTEND_BASE_URL=https://your-domain.com # 多机部署带前端URL时取消注释
depends_on:
- redis
- new-api-db
healthcheck:
test: [ "CMD-SHELL", "wget -q -O - http://localhost:${ONEAPI_PORT}/api/status | grep -o '\"success\":\\s*true' | awk -F: '{print $$2}'" ]
interval: 30s
timeout: 10s
retries: 3
# oneapi:
# # 提供oneapi的阿里云镜像下载地址避免因为网络问题无法拉取镜像的问题
# # image: justsong/one-api
# image: registry.cn-shanghai.aliyuncs.com/mynewkey/one-api:latest
# container_name: oneapi
# restart: always
# ports:
# - "3011:3000"
# networks:
# comfyai:
# ipv4_address: 172.21.0.12
# environment:
# - TZ=Asia/Shanghai
# volumes:
# - oneapi_data:/data
new-api-db:
image: registry.cn-shanghai.aliyuncs.com/comfy-ai/mysql-aliyun:latest # one-hub mysql镜像地址
restart: always
container_name: mysql
volumes:
- newapi_db_mysql_data:/var/lib/mysql # 挂载目录,持久化存储
ports:
- "${MYSQL_PORT}:3306"
networks:
comfyai:
ipv4_address: 172.21.0.7
environment:
TZ: Asia/Shanghai # 设置时区
MYSQL_ROOT_PASSWORD: "${MYSQL_ROOT_PASSWORD}" # 设置 root 用户的密码
MYSQL_USER: ${MYSQL_USER} # 创建专用用户
MYSQL_PASSWORD: "${MYSQL_USER_PASSWORD}" # 设置专用用户密码
MYSQL_DATABASE: new-api # 自动创建数据库
mongo:
image: registry.cn-shanghai.aliyuncs.com/comfy-ai/mongo-aliyun:latest
# image: registry.cn-shanghai.aliyuncs.com/comfy-ai/mongo-aliyun:4.4
container_name: mongo
restart: unless-stopped
privileged: true
# 生产环境建议不要暴露
ports:
- ${MONGO_PORT+${MONGO_PORT}:27017}
networks:
comfyai:
ipv4_address: 172.21.0.3
environment:
# 这里的配置只有首次运行生效。修改后,重启镜像是不会生效的。需要把持久化数据删除再重启,才有效果
- MONGO_INITDB_ROOT_USERNAME=${MONGO_INITDB_ROOT_USERNAME}
- MONGO_INITDB_ROOT_PASSWORD=${MONGO_INITDB_ROOT_PASSWORD}
volumes:
# - /usr/local/mongo/data:/data/db
- mongo_data:/data/db # 使用docker volume存储数据提高性能避免兼容性问题
healthcheck:
test: ["CMD", "bash", "-c", "echo > /dev/tcp/localhost/${MONGO_PORT}"]
interval: 30s
retries: 3
timeout: 10s
start_period: 60s
redis:
image: registry.cn-shanghai.aliyuncs.com/comfy-ai/redis-aliyun:latest
container_name: redis
restart: always
volumes:
- ./redis.conf:/etc/redis/redis.conf # 挂载本地 redis.conf
command: [ "redis-server", "/etc/redis/redis.conf" ] # 让 Redis 读取配置文件
# ports:
# - ${REDIS_PORT+${REDIS_PORT}:6379}
read_only: true
networks:
comfyai:
ipv4_address: 172.21.0.4
watchtower:
image: registry.cn-shanghai.aliyuncs.com/comfy-ai/watchtower-aliyun:latest
volumes:
- /var/run/docker.sock:/var/run/docker.sock
command: --debug --http-api-update
restart: always
environment:
- WATCHTOWER_HTTP_API_TOKEN=sk-ofJoA4atj9dki6AvDtI1qwxdcejjDQ
labels:
- "com.centurylinklabs.watchtower.enable=false"
# ports:
# - "${WATCHTOWER_PORT}:8080"
read_only: true
networks:
comfyai:
ipv4_address: 172.21.0.9
portainer:
image: registry.cn-shanghai.aliyuncs.com/comfy-ai/portainer-ce:2.21.5
container_name: portainer
restart: always
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- portainer_data:/data
networks:
comfyai:
ipv4_address: 172.21.0.11
# ports:
# - "${PORTAINER_PORT}:9000"
# - "${PORTAINER_HTTPS_PORT}:9443"
read_only: true
volumes:
# oneapi_data:
newapi_data:
newapi_db_mysql_data:
mongo_data:
portainer_data:
networks:
comfyai:
driver: bridge
ipam:
config:
- subnet: 172.21.0.0/16
gateway: 172.21.0.1