feat: 为 Sub2API 添加 app 镜像每日自动更新
- 生成 auto-update.sh,仅拉取并重启 app 服务(不动 db / redis) - 注册每天 04:00 的定时任务,按脚本路径去重避免重复写入 - 兼容 docker compose 与 docker-compose,安装与更新均自动检测 - 更新后清理悬空镜像,并写入 auto-update.log 日志 - 安装结束时打印手动更新提示与自动更新说明
This commit is contained in:
@@ -52,12 +52,58 @@ services:
|
|||||||
EOF
|
EOF
|
||||||
|
|
||||||
# 4、安装
|
# 4、安装
|
||||||
|
if docker compose version >/dev/null 2>&1; then
|
||||||
|
docker compose up -d
|
||||||
|
else
|
||||||
docker-compose up -d
|
docker-compose up -d
|
||||||
|
fi
|
||||||
|
|
||||||
# 5、打开防火墙的端口
|
# 5、打开防火墙的端口
|
||||||
ufw allow $port80
|
ufw allow $port80
|
||||||
ufw status
|
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 "------------------------"
|
||||||
echo "访问链接:"
|
echo "访问链接:"
|
||||||
@@ -65,3 +111,6 @@ echo "https://sub2api.ghuang.top"
|
|||||||
echo "User: admin@localhost"
|
echo "User: admin@localhost"
|
||||||
echo "Password: admin"
|
echo "Password: admin"
|
||||||
echo "------------------------"
|
echo "------------------------"
|
||||||
|
echo "已开启定时自动更新:每天 04:00 仅拉取最新 app 镜像并重启(db / redis 不动)。"
|
||||||
|
echo "手动更新可执行:$update_script"
|
||||||
|
echo "------------------------"
|
||||||
|
|||||||
Reference in New Issue
Block a user