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>
107 lines
3.3 KiB
Bash
Executable File
107 lines
3.3 KiB
Bash
Executable File
#!/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 )"
|