#!/usr/bin/env bash # Aktualisiert ein per Docker Compose betriebenes Deployment: # Stack stoppen -> lokale docker-compose.yml-Änderungen sichern (git stash) # -> git pull -> Änderungen zurückspielen -> Stack neu bauen und starten. # # Aufruf im Projektverzeichnis (dort, wo docker-compose.yml liegt): # ./update.sh set -euo pipefail cd "$(dirname "$0")" ENV_FILE=".env.local" if [ ! -f "$ENV_FILE" ]; then echo "Fehler: $ENV_FILE nicht gefunden. Bitte im Projektverzeichnis ausführen." >&2 exit 1 fi echo "==> Stoppe laufenden Stack..." docker compose --env-file "$ENV_FILE" down STASHED=0 if ! git diff --quiet -- docker-compose.yml || ! git diff --cached --quiet -- docker-compose.yml; then echo "==> Sichere lokale Änderungen an docker-compose.yml (git stash)..." git stash push --message "update.sh: docker-compose.yml vor Pull gesichert" -- docker-compose.yml STASHED=1 fi echo "==> Hole neueste Version (git pull)..." git pull if [ "$STASHED" -eq 1 ]; then echo "==> Stelle lokale Änderungen an docker-compose.yml wieder her..." if ! git stash pop; then echo "Fehler: git stash pop hatte einen Konflikt in docker-compose.yml." >&2 echo "Bitte den Konflikt manuell auflösen (git status), danach Stack manuell starten:" >&2 echo " docker compose --env-file $ENV_FILE up -d --build" >&2 exit 1 fi fi echo "==> Baue und starte Stack neu..." docker compose --env-file "$ENV_FILE" up -d --build echo "==> Fertig. Status:" docker compose ps