From 6a251df81ba814a21bc33d1fa218bfc843f62d02 Mon Sep 17 00:00:00 2001 From: sky121113 Date: Wed, 3 Jun 2026 17:36:57 +0800 Subject: [PATCH] =?UTF-8?q?[FEAT]=20=E8=AA=BF=E6=95=B4=E7=94=9F=E7=94=A2?= =?UTF-8?q?=E7=92=B0=E5=A2=83=E9=83=A8=E7=BD=B2=E6=B5=81=E7=A8=8B=E7=9A=84?= =?UTF-8?q?=E5=AE=B9=E5=99=A8=E5=81=A5=E5=BA=B7=E6=AA=A2=E6=9F=A5=E7=AD=89?= =?UTF-8?q?=E5=BE=85=E9=82=8F=E8=BC=AF=E8=88=87=E6=B8=85=E7=90=86=E7=AD=96?= =?UTF-8?q?=E7=95=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1. 修改 .gitea/workflows/deploy-prod.yaml 的 Step 1,將 docker-compose --wait 改為手動 shell 迴圈,動態輪詢 star-cloud-mysql、star-cloud-redis、star-cloud-emqx 的健康狀態,並在超時 (120秒) 時輸出日誌以提升部署強固性。 2. 調整 Step 5 - Cleanup,將 docker image prune -f 限制為只清理超過一週 (168h) 的過期映像檔,以保留 Docker 建置快取。 --- .gitea/workflows/deploy-prod.yaml | 25 +++++++++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/.gitea/workflows/deploy-prod.yaml b/.gitea/workflows/deploy-prod.yaml index 3ad7226..262200b 100644 --- a/.gitea/workflows/deploy-prod.yaml +++ b/.gitea/workflows/deploy-prod.yaml @@ -33,7 +33,28 @@ jobs: - name: Step 1 - Build & Deploy Containers run: | - WWWGROUP=1001 WWWUSER=1001 docker-compose up -d --build --wait + WWWGROUP=1001 WWWUSER=1001 docker-compose up -d --build + + for container in star-cloud-mysql star-cloud-redis star-cloud-emqx; do + echo ">>> Waiting for ${container} to become healthy..." + + for i in $(seq 1 60); do + status=$(docker inspect -f '{{if .State.Health}}{{.State.Health.Status}}{{else}}{{.State.Status}}{{end}}' "${container}" 2>/dev/null || echo "missing") + + if [ "${status}" = "healthy" ]; then + echo ">>> ${container} is healthy." + break + fi + + if [ "${i}" -eq 60 ]; then + echo ">>> ${container} did not become healthy. Current status: ${status}" + docker logs --tail 80 "${container}" || true + exit 1 + fi + + sleep 2 + done + done - name: Step 2 - Deploy Code run: | @@ -75,4 +96,4 @@ jobs: echo "✅ MQTT Worker 已重啟" - name: Step 5 - Cleanup - run: docker image prune -f + run: docker image prune -f --filter "until=168h"