#!/bin/bash set -e TAG="${1:?Usage: deploy-prod.sh (e.g. v3.3.2)}" DROPLET="root@165.245.152.51" IMAGE="git.adlee.work/alee/golfgame" echo "Deploying $TAG to production ($DROPLET)..." ssh $DROPLET bash -s "$TAG" "$IMAGE" <<'REMOTE' set -e TAG="$1" IMAGE="$2" cd /opt/golfgame # Pull the image that passed staging docker pull "$IMAGE:$TAG" docker tag "$IMAGE:$TAG" golfgame-app:latest # Update code for compose/env changes git fetch origin git checkout "$TAG" # Restart app docker compose -f docker-compose.prod.yml up -d app # Wait for healthy echo "Waiting for health check..." for i in $(seq 1 30); do if docker compose -f docker-compose.prod.yml ps app | grep -q "healthy"; then echo "Production deploy successful — $TAG" exit 0 fi sleep 2 done echo "CRITICAL: app not healthy after 60s" docker compose -f docker-compose.prod.yml logs --tail=30 app exit 1 REMOTE echo "Done."