diff --git a/.env b/.env index 876f7f5..6245eef 100644 --- a/.env +++ b/.env @@ -34,6 +34,17 @@ PORTAINER_HTTPS_PORT=8091 #网络代理,链接gpt等需要设置 CONFIG_PROXY_URL= + +#实例ID、集群情况下区分不同客户端 +CONFIG_INSTANCE_ID=2025 + +#消息队列 +CONFIG_MQ_USER=admin +CONFIG_MQ_PASSWORD=easyai2025 +CONFIG_MQ_HOST=localhost +CONFIG_MQ_PORT=5672 +CONFIG_MQ_ADMIN_PORT=15672 + #版本 VERSION=latest #日志与调试 @@ -44,6 +55,8 @@ CONFIG_TOKEN_EXPIRE=1800 CONFIG_JWT_SECRET='this is a very secret secret' + + #minio #MINIO_ROOT_USER=minioadmin #MINIO_ROOT_PASSWORD=minioadmin diff --git a/clean.sh b/clean.sh new file mode 100644 index 0000000..f012485 --- /dev/null +++ b/clean.sh @@ -0,0 +1,60 @@ +#!/bin/bash + +echo "🚀 Starting Docker cleanup script..." + +# 1. 清理已停止的容器 +echo "➡️ Step 1: Removing all stopped containers..." +# -f: 强制删除 +# docker ps -a -q: 列出所有容器(包括已停止的),并只显示ID +docker container prune -f +echo "✅ Done. Stopped containers have been removed." + +# 2. 清理未使用的网络 +echo "➡️ Step 2: Removing unused networks..." +docker network prune -f +echo "✅ Done. Unused networks have been removed." + +# 3. 清理所有未使用的镜像 +echo "➡️ Step 3: Removing all unused images..." +# docker image prune -a: -a 参数会删除所有未被任何容器引用的镜像,包括有标签的。 +docker image prune -a -f +echo "✅ Done. All unused images have been removed." + +# 4. 清理所有未使用的卷 +echo "➡️ Step 4: Removing unused volumes..." +# 警告:卷通常用于持久化数据,请确保其中的数据不再需要。 +docker volume prune -f +echo "✅ Done. Unused volumes have been removed." + +# 5. 清理 Docker 构建缓存 +echo "➡️ Step 5: Cleaning up Docker build cache..." +docker builder prune -f +echo "✅ Done. Build cache has been cleared." + +# 6. 一键式清理,以防有遗漏 +echo "➡️ Step 6: Running a final system-wide prune for good measure..." +docker system prune -a -f +echo "✅ Done. The final system prune is complete." + +# 检查是否以 root 权限运行 +if [ "$EUID" -ne 0 ]; then + echo "⚠️ This script requires root privileges. Please run with 'sudo'." + exit 1 +fi + +echo "➡️ Truncating log files for all containers..." + +# 使用 docker inspect 命令获取日志文件的完整路径 +for container_id in $(docker ps -aq); do + log_path=$(docker inspect --format='{{.LogPath}}' "$container_id") + if [ -f "$log_path" ]; then + log_size=$(du -sh "$log_path" | cut -f1) + if [ "$log_size" != "0" ]; then + echo " - Cleaning log file for container ID: $container_id (Size: $log_size)" + truncate -s 0 "$log_path" + fi + fi +done + +echo "🎉 Docker cleanup finished! Checking disk usage again..." +df -h /var/lib/docker \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml index fcf32f2..40d72e6 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -49,7 +49,6 @@ services: - "com.centurylinklabs.watchtower.enable=true" ports: - "${SERVER_HTTP_PORT}:3001" #http端口 - - "${SERVER_WS_PORT}:3002" #websocket端口 read_only: true networks: comfyai: @@ -57,12 +56,14 @@ services: depends_on: - mongo - redis + - rabbitmq volumes: - ./data/upload:/app/upload - ./data/backups:/app/backups - ./data/restores:/app/restores - ./data/tmp:/tmp - ./data/backend/.pm2:/app/.pm2 +# - ./data/backend/pm2.config.js:/app/pm2.config.js restart: unless-stopped environment: # MongoDB配置,用户管理,不会配置的话保持默认即可 @@ -82,6 +83,46 @@ services: - CONFIG_PROXY_URL=${CONFIG_PROXY_URL} #禁用文档 true/false/留空 - CONFIG_DOCS_DISABLE=false + #MQ + - CONFIG_MQ_USER=${CONFIG_MQ_USER} + - CONFIG_MQ_PASSWORD=${CONFIG_MQ_PASSWORD} + - CONFIG_MQ_HOST=rabbitmq + - CONFIG_MQ_PORT=${CONFIG_MQ_PORT} + # 日志大小设置,避免日志文件过大 + logging: + driver: "json-file" + options: + max-size: "100m" + max-file: "10" + ws-gateway: + container_name: easyai-wsgateway # websocket网关 + # 阿里云镜像地址 + image: registry.cn-shanghai.aliyuncs.com/easyaigc/wsgateway:latest # 阿里云 + labels: + - "com.centurylinklabs.watchtower.enable=true" + ports: + - "${SERVER_WS_PORT}:3002" #http端口 + read_only: true + networks: + - comfyai + depends_on: + - redis + - rabbitmq + volumes: + - ./data/wsgateway/.pm2:/app/.pm2 + restart: unless-stopped + environment: + # Redis配置,队列缓存,不会配置的话保持默认即可 + - CONFIG_COMFYUI_QUENE_REDIS_HOST=172.21.0.4 + - CONFIG_COMFYUI_QUENE_REDIS_PORT=6379 + - CONFIG_COMFYUI_QUENE_REDIS_PASSWORD= + #日志与调试 + - LOG_LEVEL=${LOG_LEVEL} + #MQ + - CONFIG_MQ_USER=${CONFIG_MQ_USER} + - CONFIG_MQ_PASSWORD=${CONFIG_MQ_PASSWORD} + - CONFIG_MQ_HOST=rabbitmq + - CONFIG_MQ_PORT=${CONFIG_MQ_PORT} # 日志大小设置,避免日志文件过大 logging: driver: "json-file" @@ -113,6 +154,12 @@ services: retries: 3 timeout: 10s start_period: 60s + # 日志大小设置,避免日志文件过大 + logging: + driver: "json-file" + options: + max-size: "100m" + max-file: "10" redis: image: registry.cn-shanghai.aliyuncs.com/comfy-ai/redis-aliyun:latest container_name: redis @@ -126,6 +173,28 @@ services: networks: comfyai: ipv4_address: 172.21.0.4 + # 日志大小设置,避免日志文件过大 + logging: + driver: "json-file" + options: + max-size: "100m" + max-file: "10" + rabbitmq: + image: registry.cn-shanghai.aliyuncs.com/easyaigc/mq:latest #阿里云镜像加速 +# image: rabbitmq:4-management #官方原版镜像 + container_name: rabbitmq + restart: unless-stopped + environment: + RABBITMQ_DEFAULT_USER: ${CONFIG_MQ_USER} # 登录用户名 + RABBITMQ_DEFAULT_PASS: ${CONFIG_MQ_PASSWORD} # 登录密码 + ports: + - "${CONFIG_MQ_PORT}:${CONFIG_MQ_PORT}" # 应用连接端口 (AMQP) + - "${CONFIG_MQ_ADMIN_PORT}:15672" # Web 管理界面 + volumes: + - rabbitmq_data:/var/lib/rabbitmq # 持久化数据 + networks: + comfyai: + ipv4_address: 172.21.0.12 watchtower: image: registry.cn-shanghai.aliyuncs.com/comfy-ai/watchtower-aliyun:latest volumes: @@ -142,20 +211,32 @@ services: 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 + # 日志大小设置,避免日志文件过大 + logging: + driver: "json-file" + options: + max-size: "100m" + max-file: "10" +# 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 +# # 日志大小设置,避免日志文件过大 +# logging: +# driver: "json-file" +# options: +# max-size: "100m" +# max-file: "10" +## ports: +## - "${PORTAINER_PORT}:9000" +## - "${PORTAINER_HTTPS_PORT}:9443" +# read_only: true # 如果需要部署minio,取消下方的注释即可 # minio: # # image: minio/minio @@ -178,6 +259,7 @@ services: volumes: mongo_data: portainer_data: + rabbitmq_data: networks: comfyai: driver: bridge