Files
Vorrania/deploy/update.sh
Scarriffle 2423e74cae Umbenennung in Vorrania
Sichtbarer Name ueberall: Kopfzeichen der Oberflaeche, Seitentitel, Favicon,
API-Titel, User-Agent zu Open Food Facts, Dateinamen der Sicherungen, README,
Roadmap, Installer- und Update-Skript, npm-Paketname.

Bewusst NICHT umbenannt, jeweils mit Begruendung im Code:
- POSTGRES_USER/DB und der Volume-Name bleiben "project_good". Ein neuer
  Volume-Name legt eine leere Datenbank an, ein neuer Benutzername scheitert am
  bestehenden Volume - vorhandene Bestaende waeren verloren.
- Der localStorage-Schluessel bleibt, sonst waeren alle Browser einmal
  ausgesperrt.
- ios/ bleibt unangetastet (wird getrennt bearbeitet).

Die Klon-Adresse im README zeigt jetzt auf .../vorrania.git; das Repo in Gitea
muss dafuer umbenannt werden.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-23 13:05:32 +02:00

107 lines
3.3 KiB
Bash
Executable File
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/usr/bin/env bash
#
# Vorrania Update-Skript.
# Holt die neueste Version aus Git und baut die Container neu.
#
# Nutzung (von überall aufrufbar):
# ./update.sh Update holen, neu bauen, starten
# ./update.sh --prune zusätzlich alte, ungenutzte Images aufräumen
# ./update.sh --no-pull nur neu bauen (ohne git pull)
#
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
REPO_DIR="$(cd "$SCRIPT_DIR/.." && pwd)"
ENV_FILE="$SCRIPT_DIR/.env"
DO_PULL=1
DO_PRUNE=0
for arg in "$@"; do
case "$arg" in
--no-pull) DO_PULL=0 ;;
--prune) DO_PRUNE=1 ;;
-h|--help) sed -n '2,12p' "${BASH_SOURCE[0]}"; exit 0 ;;
*) echo "Unbekannte Option: $arg" >&2; exit 1 ;;
esac
done
info() { printf '\033[0;32m==>\033[0m %s\n' "$*"; }
warn() { printf '\033[0;33m[!]\033[0m %s\n' "$*"; }
error() { printf '\033[0;31m[x]\033[0m %s\n' "$*" >&2; }
# --- Docker Compose ermitteln ---------------------------------------------
if docker compose version >/dev/null 2>&1; then
COMPOSE="docker compose"
elif command -v docker-compose >/dev/null 2>&1; then
COMPOSE="docker-compose"
else
error "Docker Compose wurde nicht gefunden."
exit 1
fi
if [[ ! -f "$ENV_FILE" ]]; then
error "Keine .env in $SCRIPT_DIR gefunden. Bitte zuerst ./install.sh ausführen."
exit 1
fi
# --- Update aus Git holen --------------------------------------------------
if [[ "$DO_PULL" -eq 1 ]]; then
if [[ ! -d "$REPO_DIR/.git" ]]; then
warn "$REPO_DIR ist kein Git-Repository überspringe git pull."
else
info "Hole Updates aus Git …"
before="$(git -C "$REPO_DIR" rev-parse --short HEAD 2>/dev/null || echo '?')"
if ! git -C "$REPO_DIR" pull --ff-only; then
error "git pull fehlgeschlagen (lokale Änderungen?)."
echo " Lokalen Stand ansehen: git -C \"$REPO_DIR\" status"
echo " Lokale Änderungen weg: git -C \"$REPO_DIR\" checkout -- ."
exit 1
fi
after="$(git -C "$REPO_DIR" rev-parse --short HEAD)"
if [[ "$before" == "$after" ]]; then
info "Bereits aktuell ($after) baue trotzdem neu."
else
info "Aktualisiert: $before -> $after"
fi
fi
fi
# --- Neu bauen und starten -------------------------------------------------
info "Baue Container neu …"
( cd "$SCRIPT_DIR" && $COMPOSE --env-file "$ENV_FILE" build )
info "Starte Dienste …"
( cd "$SCRIPT_DIR" && $COMPOSE --env-file "$ENV_FILE" up -d )
if [[ "$DO_PRUNE" -eq 1 ]]; then
info "Räume ungenutzte Images auf …"
docker image prune -f >/dev/null || true
fi
# --- Kurzer Gesundheitscheck ----------------------------------------------
web_port="$(grep -E '^WEB_PORT=' "$ENV_FILE" | cut -d= -f2-)"
web_port="${web_port:-8080}"
if command -v curl >/dev/null 2>&1; then
info "Warte auf das Backend …"
ok=0
for _ in $(seq 1 30); do
if curl -fsS "http://localhost:${web_port}/api/health" >/dev/null 2>&1; then
ok=1
break
fi
sleep 2
done
if [[ "$ok" -eq 1 ]]; then
info "Backend ist erreichbar."
else
warn "Backend antwortet noch nicht Logs prüfen:"
echo " ( cd \"$SCRIPT_DIR\" && $COMPOSE logs backend --tail=40 )"
fi
fi
echo
info "Update fertig."
echo " Web-UI: http://localhost:${web_port} (bzw. http://<server-ip>:${web_port})"
echo " Status: ( cd \"$SCRIPT_DIR\" && $COMPOSE ps )"