fix: rebuild app image when base image changes during deployment

- Track BASE_REBUILT flag to detect base image rebuilds
- Force app image rebuild when base image is rebuilt
- Prevents stale app images built with outdated base images
- Ensures consistent deployment when base dependencies change
This commit is contained in:
fawney19
2025-12-19 11:32:43 +08:00
parent 5c7ad089d2
commit 1e989d3bad

View File

@@ -162,25 +162,32 @@ git pull
# 标记是否需要重启 # 标记是否需要重启
NEED_RESTART=false NEED_RESTART=false
BASE_REBUILT=false
# 检查基础镜像是否存在,或依赖是否变化 # 检查基础镜像是否存在,或依赖是否变化
if ! docker image inspect aether-base:latest >/dev/null 2>&1; then if ! docker image inspect aether-base:latest >/dev/null 2>&1; then
echo ">>> Base image not found, building..." echo ">>> Base image not found, building..."
build_base build_base
BASE_REBUILT=true
NEED_RESTART=true NEED_RESTART=true
elif check_deps_changed; then elif check_deps_changed; then
echo ">>> Dependencies changed, rebuilding base image..." echo ">>> Dependencies changed, rebuilding base image..."
build_base build_base
BASE_REBUILT=true
NEED_RESTART=true NEED_RESTART=true
else else
echo ">>> Dependencies unchanged." echo ">>> Dependencies unchanged."
fi fi
# 检查代码是否变化 # 检查代码是否变化,或者 base 重建了app 依赖 base
if ! docker image inspect aether-app:latest >/dev/null 2>&1; then if ! docker image inspect aether-app:latest >/dev/null 2>&1; then
echo ">>> App image not found, building..." echo ">>> App image not found, building..."
build_app build_app
NEED_RESTART=true NEED_RESTART=true
elif [ "$BASE_REBUILT" = true ]; then
echo ">>> Base image rebuilt, rebuilding app image..."
build_app
NEED_RESTART=true
elif check_code_changed; then elif check_code_changed; then
echo ">>> Code changed, rebuilding app image..." echo ">>> Code changed, rebuilding app image..."
build_app build_app