From dafd1a53a56cd74c757d71061a1fb7ca144fd670 Mon Sep 17 00:00:00 2001 From: lezi-fun <177434121+lezi-fun@users.noreply.github.com> Date: Fri, 14 Aug 2026 17:06:04 +0800 Subject: [PATCH] feat: update app container after image pull --- README.md | 11 +++++------ scripts/update-docker.sh | 25 +++++++++++++++++++++++++ 2 files changed, 30 insertions(+), 6 deletions(-) create mode 100755 scripts/update-docker.sh diff --git a/README.md b/README.md index 7ea7892..785aad2 100644 --- a/README.md +++ b/README.md @@ -47,14 +47,13 @@ docker-compose up -d 应用默认运行在 `http://localhost:3000`(监听 `0.0.0.0`,局域网可访问)。 -##Docker更新 +## Docker 更新 +```bash +./scripts/update-docker.sh ``` -# 拉取最新镜像 -docker pull ghcr.io/forumlify/public:next -# 重启 -docker compose down && docker compose up -d -``` + +更新脚本兼容 Docker Compose v2(`docker compose`)和 v1(`docker-compose`)。它会先拉取最新的 `app` 镜像,再让 Compose 在镜像发生变化时重新创建应用容器;数据库容器和数据卷不会重建。 --- diff --git a/scripts/update-docker.sh b/scripts/update-docker.sh new file mode 100755 index 0000000..b41192d --- /dev/null +++ b/scripts/update-docker.sh @@ -0,0 +1,25 @@ +#!/usr/bin/env bash + +set -Eeuo pipefail + +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +PROJECT_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)" +cd "$PROJECT_ROOT" + +if docker compose version >/dev/null 2>&1; then + compose=(docker compose) +elif command -v docker-compose >/dev/null 2>&1; then + compose=(docker-compose) +else + echo "Docker Compose is required (docker compose or docker-compose)." >&2 + exit 1 +fi + +echo "Pulling the latest Forumlify image..." +"${compose[@]}" pull app + +echo "Applying the latest image to the Forumlify app container..." +"${compose[@]}" up -d --no-deps app + +echo "Forumlify is now running with the latest image." +"${compose[@]}" ps app