Prod: rebuild script verbessert (down --remove-orphans, pull, healthcheck, Logs)
This commit is contained in:
@@ -1,6 +1,44 @@
|
||||
#! /bin/bash
|
||||
sudo docker compose -f docker-compose-prod.yml down
|
||||
git pull
|
||||
sudo docker compose -f docker-compose-prod.yml build --no-cache
|
||||
sudo docker compose -f docker-compose-prod.yml up -d
|
||||
sudo docker compose -f docker-compose-prod.yml logs -f stargirlnails
|
||||
set -euo pipefail
|
||||
|
||||
# Usage: ./scripts/rebuild-prod.sh [branch]
|
||||
# Default branch is current; pass a branch to checkout before pulling/building.
|
||||
|
||||
COMPOSE_FILE=docker-compose-prod.yml
|
||||
|
||||
echo "[1/7] Git: Fetch & pull latest changes"
|
||||
if [ "${1-}" != "" ]; then
|
||||
git fetch origin "$1"
|
||||
git checkout "$1"
|
||||
fi
|
||||
git pull --rebase
|
||||
|
||||
echo "[2/7] Stop and remove running services (including orphans)"
|
||||
sudo docker compose -f "$COMPOSE_FILE" down --remove-orphans || true
|
||||
|
||||
echo "[3/7] Pull base images (e.g., caddy)"
|
||||
sudo docker compose -f "$COMPOSE_FILE" pull || true
|
||||
|
||||
echo "[4/7] Build application image without cache"
|
||||
sudo docker compose -f "$COMPOSE_FILE" build --no-cache
|
||||
|
||||
echo "[5/7] Start services in background"
|
||||
sudo docker compose -f "$COMPOSE_FILE" up -d
|
||||
|
||||
echo "[6/7] Wait for app healthcheck to pass"
|
||||
# Wait up to ~90s for healthy status
|
||||
for i in {1..18}; do
|
||||
STATUS=$(sudo docker compose -f "$COMPOSE_FILE" ps --format json | jq -r '.[] | select(.Name=="stargirlnails-app" or .Service=="stargirlnails") | .State') || true
|
||||
if echo "$STATUS" | grep -qi "running"; then
|
||||
# Optional: also check the container health if reported
|
||||
HEALTH=$(sudo docker compose -f "$COMPOSE_FILE" ps --format json | jq -r '.[] | select(.Name=="stargirlnails-app" or .Service=="stargirlnails") | .Health') || true
|
||||
if [ -z "$HEALTH" ] || echo "$HEALTH" | grep -qi "healthy"; then
|
||||
echo "Service is running${HEALTH:+ and healthy}."
|
||||
break
|
||||
fi
|
||||
fi
|
||||
sleep 5
|
||||
done
|
||||
|
||||
echo "[7/7] Tail recent logs (press Ctrl+C to exit)"
|
||||
sudo docker compose -f "$COMPOSE_FILE" logs --since=10m -f
|
||||
|
Reference in New Issue
Block a user