#!/bin/bash set -Eeuo pipefail APP_DIR="/volume2/docker_nvme/assetmanager" REMOTE_URL="https://git.jusaro.de/Roland/Assetmanager.git" BRANCH="main" cd "$APP_DIR" command -v git >/dev/null || { echo "Fehler: Git ist nicht installiert." exit 1 } command -v docker >/dev/null || { echo "Fehler: Docker wurde nicht gefunden." exit 1 } [ -d ".git" ] || { echo "Fehler: $APP_DIR ist kein Git-Repository." exit 1 } # Prüfen, ob wichtige lokale Daten tatsächlich ignoriert werden for path in \ ".env" \ "data/config/config.json" \ "data/postgres/__check__" \ "data/uploads/__check__" \ "data/logs/__check__" do if ! git check-ignore -q --no-index "$path"; then echo "Sicherheitsabbruch: $path wird nicht durch .gitignore geschützt." exit 1 fi done # Remote-Adresse korrigieren git remote set-url origin "$REMOTE_URL" echo "AssetManager wird gestoppt ..." docker compose down SUCCESS=0 restart_on_error() { if [ "$SUCCESS" -eq 0 ]; then echo "Update fehlgeschlagen – Container werden wieder gestartet." docker compose up -d || true fi } trap restart_on_error EXIT echo "Aktueller Stand wird von Gitea geladen ..." git fetch --prune origin echo "Lokaler Programmstand wird ersetzt ..." git reset --hard "origin/$BRANCH" # Entfernt unversionierte, aber nicht ignorierte Dateien. # .env, Datenbank, Uploads und Konfiguration bleiben erhalten. git clean -fd echo "Container werden neu gebaut und gestartet ..." docker compose up -d --build SUCCESS=1 trap - EXIT echo "Update abgeschlossen." docker compose logs --tail=100 -f