From 33c1068380c078b2612443e80fa69d67a9576197 Mon Sep 17 00:00:00 2001 From: eddy Date: Wed, 1 Jul 2026 03:11:59 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E4=B8=BA=20Sub2API=20=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0=20app=20=E9=95=9C=E5=83=8F=E6=AF=8F=E6=97=A5=E8=87=AA?= =?UTF-8?q?=E5=8A=A8=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 生成 auto-update.sh,仅拉取并重启 app 服务(不动 db / redis) - 注册每天 04:00 的定时任务,按脚本路径去重避免重复写入 - 兼容 docker compose 与 docker-compose,安装与更新均自动检测 - 更新后清理悬空镜像,并写入 auto-update.log 日志 - 安装结束时打印手动更新提示与自动更新说明 --- install/23-Sub2API.sh | 51 ++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 50 insertions(+), 1 deletion(-) diff --git a/install/23-Sub2API.sh b/install/23-Sub2API.sh index 6b7911e..1d977b4 100644 --- a/install/23-Sub2API.sh +++ b/install/23-Sub2API.sh @@ -52,12 +52,58 @@ services: EOF # 4、安装 -docker-compose up -d +if docker compose version >/dev/null 2>&1; then + docker compose up -d +else + docker-compose up -d +fi # 5、打开防火墙的端口 ufw allow $port80 ufw status +# 6、配置每日自动更新 +# install_dir 已在脚本开头(第 13 行)创建,这里仅定义路径 +install_dir=/root/data/docker_data/Sub2API +update_script="$install_dir/auto-update.sh" + +cat <<'EOF' > "$update_script" +#!/bin/bash +set -euo pipefail + +install_dir=/root/data/docker_data/Sub2API + +cd "$install_dir" # 进入 docker-compose 所在的文件夹 + +if docker compose version >/dev/null 2>&1; then + compose_cmd=(docker compose) +elif command -v docker-compose >/dev/null 2>&1; then + compose_cmd=(docker-compose) +else + echo "未检测到 docker compose 或 docker-compose,无法自动更新。" >&2 + exit 1 +fi + +# 只更新 app 服务(Sub2API 镜像),不动 db / redis +"${compose_cmd[@]}" pull app +"${compose_cmd[@]}" up -d app + +# 清理旧镜像,释放磁盘空间 +docker image prune -f +EOF + +chmod +x "$update_script" + +# 写入每日 04:00 自动更新任务 +cron_line="0 4 * * * $update_script >> /root/data/docker_data/Sub2API/auto-update.log 2>&1" +if command -v crontab >/dev/null 2>&1; then + # 使用脚本路径去重,避免重复写入 Sub2API 自动更新任务 + ( crontab -l 2>/dev/null | grep -v -F -- "$update_script" || true ; echo "$cron_line" ) | crontab - + echo "已配置定时自动更新任务:每天 04:00 自动更新 Sub2API app 镜像(不更新 db / redis)。" +else + echo "未检测到 crontab,跳过定时更新任务配置。可手动执行 $update_script 更新。" +fi + # 打印访问链接 echo "------------------------" echo "访问链接:" @@ -65,3 +111,6 @@ echo "https://sub2api.ghuang.top" echo "User: admin@localhost" echo "Password: admin" echo "------------------------" +echo "已开启定时自动更新:每天 04:00 仅拉取最新 app 镜像并重启(db / redis 不动)。" +echo "手动更新可执行:$update_script" +echo "------------------------"