#!/usr/bin/env bash set -euo pipefail SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" cd "$SCRIPT_DIR" COMPOSE_FILE="docker-compose.deploy.yml" if ! command -v docker >/dev/null 2>&1; then echo "❌ Fehler: docker ist nicht installiert oder nicht im PATH." exit 1 fi if ! docker compose version >/dev/null 2>&1; then echo "❌ Fehler: docker compose ist nicht verfügbar." exit 1 fi if [ ! -f "$COMPOSE_FILE" ]; then echo "❌ Fehler: $COMPOSE_FILE nicht gefunden." exit 1 fi if [ ! -f ".env" ]; then if [ -f ".env.example" ]; then cp .env.example .env echo "ℹ️ .env wurde aus .env.example erstellt. Bitte Werte prüfen." else echo "❌ Fehler: .env fehlt und keine .env.example vorhanden." exit 1 fi fi IMAGE_REF="$(docker compose -f "$COMPOSE_FILE" config | awk '/image:/{print $2; exit}')" if [ -z "$IMAGE_REF" ]; then echo "❌ Fehler: Kein Image in $COMPOSE_FILE gefunden." exit 1 fi echo "📥 Hole aktuelle Git-Änderungen..." git pull --ff-only echo "⬇️ Lade aktuelles Container-Image..." if docker compose -f "$COMPOSE_FILE" pull; then echo "✅ Image-Pull erfolgreich." else echo "⚠️ Image-Pull fehlgeschlagen. Prüfe lokales Image: $IMAGE_REF" if docker image inspect "$IMAGE_REF" >/dev/null 2>&1; then echo "✅ Lokales Image gefunden. Update läuft mit lokalem Image weiter." else echo "❌ Weder Registry-Pull erfolgreich noch lokales Image vorhanden: $IMAGE_REF" echo " Bitte Registry-Zugriff prüfen oder ein lokales Image mit genau diesem Tag bereitstellen." exit 1 fi fi echo "🚀 Starte/aktualisiere Container..." docker compose -f "$COMPOSE_FILE" up -d echo "✅ Update abgeschlossen." docker compose -f "$COMPOSE_FILE" ps