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"