fix(cd): 修復 sync 版本 mount drift

This commit is contained in:
OoO
2026-04-30 23:24:54 +08:00
parent dd35306399
commit d06c7016dc
6 changed files with 31 additions and 10 deletions

View File

@@ -175,12 +175,23 @@ jobs:
# ROOT CAUSE FIX (2026-04-28): `up -d` 確保容器不存在時可自動 create。
# ZERO-DOWNTIME SYNC (2026-04-30): app 用 Gunicorn HUP 熱重載 workers
# 不重啟 momo-pro-system 容器,避免一般 Python/模板同步造成短暫 502。
# MOUNT DRIFT GUARD (2026-04-30): 舊容器若尚未套用 app.py/config.py bind mount
# health/version 會卡在 image 內舊檔;只在偵測到 drift 時 force-recreate app。
ssh -i ~/.ssh/id_deploy ollama@192.168.0.188 \
"cd /home/ollama/momo-pro && \
docker compose up -d --no-deps momo-app scheduler telegram-bot && \
docker kill -s HUP momo-pro-system && \
docker compose restart scheduler telegram-bot && \
echo '✅ Sync 已套用app 熱重載scheduler/telegram-bot 已重啟)'"
"cd /home/ollama/momo-pro && bash -s" <<'REMOTE_SYNC'
set -e
docker compose up -d --no-deps scheduler telegram-bot
if docker inspect momo-pro-system --format '{{range .Mounts}}{{println .Destination}}{{end}}' | grep -qx '/app/app.py' \
&& docker inspect momo-pro-system --format '{{range .Mounts}}{{println .Destination}}{{end}}' | grep -qx '/app/config.py'; then
docker compose up -d --no-deps momo-app
else
echo '⚠️ momo-app mount drift detected; recreating app container once to apply bind mounts'
docker compose up -d --no-deps --force-recreate momo-app
fi
docker kill -s HUP momo-pro-system
docker compose restart scheduler telegram-bot
echo '✅ Sync 已套用app 熱重載scheduler/telegram-bot 已重啟)'
REMOTE_SYNC
# ── 模式 B重建 Docker ImageDockerfile / requirements.txt 變動) ──
- name: 同步所有檔案並重建 Image