From c539d74e39a161b4d49749a30cba6eda0cf7c11b Mon Sep 17 00:00:00 2001 From: wangbo Date: Thu, 8 Jan 2026 09:09:14 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96update.sh=E8=84=9A=E6=9C=AC?= =?UTF-8?q?=EF=BC=8C=E4=BD=BF=E4=B9=8B=E5=85=B7=E6=9C=89=E8=87=AA=E5=8A=A8?= =?UTF-8?q?=E6=9B=B4=E6=96=B0docker-compose.yml=E9=85=8D=E7=BD=AE=E6=96=87?= =?UTF-8?q?=E4=BB=B6=E7=9A=84=E8=83=BD=E5=8A=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 145 ++++++++++++++++++++++++++++++++++++++++++++---------- update.sh | 90 +++++++++++++++++++++++++++++++-- 2 files changed, 205 insertions(+), 30 deletions(-) diff --git a/README.md b/README.md index 4cdab04..e2255e1 100644 --- a/README.md +++ b/README.md @@ -26,7 +26,7 @@ chmod +x start.sh 6. 脚本运行完成无错误,并且提示`EasyAI应用启动成功`表示应用启动成功,打开浏览器输入服务器的公网ip:3010或者局域网IP:3010,即可访问EasyAI应用 ### 启用HTTPS -1. [更改为你的域名]修改easyai-proxy.conf中域名51easyai.com为你的域名[可以使用Ctrl+F批量替换51easyai.com为你的域名] +1. [更改为你的域名]修改`easyai-proxy.conf`中域名`51easyai.com`为你的域名[可以使用Ctrl+F批量替换51easyai.com为你的域名] 2. [修改.env文件]修改如下两个环境变量为如下的对应的值 ```bash NUXT_PUBLIC_BASE_APIURL=/api @@ -42,51 +42,146 @@ chmod +x https.sh ``` ### 更新升级 +update.sh 脚本用于自动更新 EasyAI 应用,包含以下功能: +- 自动检查和更新 `docker-compose.yml` 文件(从远程仓库获取最新版本) +- 兼容 `docker compose` 和 `docker-compose` 两种命令格式 +- 自动拉取最新镜像并重启服务 + +#### 使用步骤 1. [首次执行,后续无需重复执行]添加执行权限,命令: ```bash chmod +x update.sh ``` -2.执行更新 + +2. 执行更新(默认会检查并更新 docker-compose.yml) ```bash ./update.sh ``` +#### 参数选项 +- **跳过 docker-compose.yml 更新**:如果你已经手动修改了 `docker-compose.yml` 文件,可以使用 `-s` 或 `--skip-compose-update` 参数跳过更新 +```bash +# 跳过 docker-compose.yml 更新,仅更新容器镜像 +./update.sh -s +# 或 +./update.sh --skip-compose-update +``` + +- **查看帮助信息**: +```bash +./update.sh -h +# 或 +./update.sh --help +``` + +#### 更新说明 +- 脚本会自动从远程仓库下载最新的 `docker-compose.yml` 文件 +- 如果本地文件与远程文件不同,会将原文件备份为 `docker-compose.yml.bak` +- 如果本地文件已是最新版本,则跳过更新 +- 更新完成后会自动执行 `docker-compose pull` 和 `docker-compose up -d` 来重启服务 + ## 重要更新记录: -2025.5.14 -1. 修改easyai-proxy文件,删除原来旧的MCP转发,新增新的标准SSE的代理优化 +### 2025.12.27 +1. 修复挂载报错问题 +### 2025.12.26 +1. 增加临时文件目录挂载,解决只读文件系统问题 +2. 增加后端日志目录挂载,便于日志管理和查看 -2025.3.11 +### 2025.12.05 +1. 更新新的视频编辑容器,支持更多视频处理功能 + +### 2025.11.12 +1. 删除redis内存限制配置 + +### 2025.11.11 +1. 增加redis内存限制配置 + +### 2025.09.22 +1. 更新配置文件中的密钥设置,用于平台对接 +2. 优化docker环境变量配置,直接在docker中引入env file,避免每次都需要手动增加环境变量 + +### 2025.09.20 +1. 优化redis和MQ的云端配置 + +### 2025.08.31 +1. 优化nginx配置,支持插件功能 + +### 2025.08.19 +1. 更新部署相关文件 + +### 2025.08.08 +1. 优化部署方式为pm2,提升应用稳定性 + +### 2025.07.28 +1. 增加缓存目录挂载,让nodeJS执行子进程有操作缓存的权限 + +### 2025.07.12 +1. 优化docker重启策略 +2. 增加minio相关配置说明 + +### 2025.07.05 +1. 优化安装docker-compose的脚本,增加本地docker-compose的兜底方案 +2. 兼容 `docker compose` 和 `docker-compose` 两种命令格式 + +### 2025.07.04 +1. 适配新的文件上传功能 +2. 增加后端文件上传目录的挂载 +3. 增加二级域名的取消域名重定向注释说明 + +### 2025.06.24 +1. 增加禁用文档的环境变量和配置选项 + +### 2025.06.12 +1. 增加CentOS系统兼容性支持 + +### 2025.06.06 +1. 删除MCP server的配置 + +### 2025.06.04 +1. 删除newAPI相关配置 + +### 2025.05.26 +1. 删除旧websocket MCP环境变量配置 + +### 2025.05.15 +1. 优化MCP消息转发Nginx配置文件 + +### 2025.05.14 +1. 删除原MCP旧配置,增加新的MCP配置 +2. 修改easyai-proxy文件,删除原来旧的MCP转发,新增新的标准SSE的代理优化 +3. 更新README文档 + +### 2025.05.13 +1. 增加docker-compose文件 + +### 2025.03.11 1. 增加了redis的配置文件,提升了生产环境的稳定性 - +### 早期版本 1. 升级了mongoDB的数据挂载方式,使用volume挂载,避免跨平台的一些数据挂载问题 -2. .env增加了版本,日志和token参数的配置 +2. .env增加了版本、日志和token参数的配置 - -### 重要!!!!!!!!老用户必看!!!!!!!!!!!!!! -此版本docker-compose修改了mongo数据库的挂载方式,老用户升级务必备份数据!!! -老用户备份好数据后,如果要保留原有数据,需要将volumes里第一行的# 去掉,将下面的一行(- mongo_data:/data/db )前面加上#注释掉! - -```bash - mongo: - image: registry.cn-shanghai.aliyuncs.com/comfy-ai/mongo-aliyun:latest - #省略内容 -........ - volumes: -# - /usr/local/mongo/data:/data/db # 挂载本地数据 - - mongo_data:/data/db # 使用docker volume存储数据,提高性能,避免兼容性问题 -........ -``` - ## 常见问题 -1. 启动时提示`Error: listen EADDRINUSE: address already in use :::3000` + +1. 某个服务无法运行 +解决方案:重启docker(可以解决99%的问题) + +```bash +# +cd easyai && docker compose down && docker compose up -d +#如果提示docker "compose" is not a docker command,则使用下面的命令 +cd easyai && docker-compose down && docker-compose up -d + +``` + +2. 启动时提示`Error: listen EADDRINUSE: address already in use :::3000` 端口占用,请检查端口3000是否被其他程序占用 -2. invalid interpolation format for services.mongo.ports.[]. You may need to escape any $ with another $ 等关于docker-compose文件格式的报错 +3. invalid interpolation format for services.mongo.ports.[]. You may need to escape any $ with another $ 等关于docker-compose文件格式的报错 解决方案:docker-compose 版本太低,一般为服务器之前自己使用apt安装低版本的docker-compose,需要卸载重新安装 ```bash # 卸载docker-compose diff --git a/update.sh b/update.sh index ed366d4..04c5468 100755 --- a/update.sh +++ b/update.sh @@ -2,6 +2,78 @@ set -e # 发生错误时终止脚本执行 +# 参数解析 +SKIP_COMPOSE_UPDATE=false + +# 解析命令行参数 +while [[ $# -gt 0 ]]; do + case $1 in + --skip-compose-update|-s) + SKIP_COMPOSE_UPDATE=true + shift + ;; + --help|-h) + echo "用法: $0 [选项]" + echo "" + echo "选项:" + echo " -s, --skip-compose-update 跳过 docker-compose.yml 的更新" + echo " -h, --help 显示此帮助信息" + echo "" + exit 0 + ;; + *) + echo "❌ 未知参数: $1" + echo "使用 --help 或 -h 查看帮助信息" + exit 1 + ;; + esac +done + +# 更新 docker-compose.yml 文件 +if [ "$SKIP_COMPOSE_UPDATE" = false ]; then + echo "" + echo "===========================" + echo "📄 检查并更新 docker-compose.yml" + echo "===========================" + + COMPOSE_FILE="docker-compose.yml" + COMPOSE_URL="https://git.51easyai.com/wangbo/easyai/raw/main/docker-compose.yml" + TEMP_FILE=$(mktemp) + + # 检查本地文件是否存在 + if [ ! -f "$COMPOSE_FILE" ]; then + echo "⚠️ 本地 $COMPOSE_FILE 不存在,直接下载最新版本..." + curl -fsSL "$COMPOSE_URL" -o "$COMPOSE_FILE" + echo "✅ $COMPOSE_FILE 已下载" + else + echo "📥 正在下载远程 $COMPOSE_FILE..." + if curl -fsSL "$COMPOSE_URL" -o "$TEMP_FILE"; then + # 比较本地文件和远程文件的内容 + if cmp -s "$COMPOSE_FILE" "$TEMP_FILE"; then + echo "✅ 本地 $COMPOSE_FILE 已是最新版本,无需更新" + rm -f "$TEMP_FILE" + else + echo "🔄 检测到新版本,正在更新..." + # 备份原文件 + BACKUP_FILE="${COMPOSE_FILE}.bak" + cp "$COMPOSE_FILE" "$BACKUP_FILE" + echo "💾 原文件已备份为 $BACKUP_FILE" + # 替换为新文件 + mv "$TEMP_FILE" "$COMPOSE_FILE" + echo "✅ $COMPOSE_FILE 已更新到最新版本" + fi + else + echo "❌ 无法下载远程文件,跳过更新步骤" + rm -f "$TEMP_FILE" + fi + fi + + echo "" +else + echo "⏭️ 跳过 docker-compose.yml 更新(已使用 --skip-compose-update 参数)" + echo "" +fi + echo "===========================" echo "🚀 开始自动安装 Docker 和 Docker Compose" echo "===========================" @@ -30,24 +102,32 @@ else sudo systemctl start docker fi -# 检查 Docker Compose 是否已安装 -if command -v docker-compose &> /dev/null; then - echo "✅ Docker Compose 已安装,跳过安装步骤" +# 检测并使用正确的 Docker Compose 命令 +# 优先使用新版本的 docker compose(作为 docker 的子命令) +if docker compose version &> /dev/null; then + DOCKER_COMPOSE_CMD="docker compose" + echo "✅ 检测到 Docker Compose (新版本: docker compose)" +elif command -v docker-compose &> /dev/null; then + DOCKER_COMPOSE_CMD="docker-compose" + echo "✅ 检测到 Docker Compose (旧版本: docker-compose)" else echo "⚙️ 安装 Docker Compose..." sudo mv ./docker-compose-linux-x86_64 /usr/bin/docker-compose #设置权限 chmod +x /usr/bin/docker-compose + DOCKER_COMPOSE_CMD="docker-compose" + echo "✅ Docker Compose 安装完成" fi echo "📌 Docker 运行状态:" sudo systemctl status docker --no-pager || true echo "📌 Docker Compose 版本:" -docker-compose -v +$DOCKER_COMPOSE_CMD version echo "🎉 Docker 和 Docker Compose 已就绪!" + echo "🚀 重新启动EasyAI" -sudo docker-compose pull && sudo docker-compose up -d +sudo $DOCKER_COMPOSE_CMD pull && sudo $DOCKER_COMPOSE_CMD up -d echo "🎉EasyAI应用更新成功"