272d30357f
Kapselt git pull + Deploy-Config + Neustart, damit die Migrationsschritte nicht mehr per Hand nötig sind: - kong.yml vor dem Pull auf die Vorlage zurücksetzen (kein Konflikt), danach CORS-Origin aus SITE_URL rendern - chown -R 1000:1000 (non-root-Container darf schreiben) - git safe.directory für root auf dem uid-1000-Repo - docker compose up -d --build + kong reload + Healthcheck Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
56 lines
2.1 KiB
Bash
Executable File
56 lines
2.1 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# OPENBUREAU — Update im LXC in einem Rutsch.
|
|
# Statt `git pull` direkt: holt den Code, rendert die Deploy-Config, setzt die
|
|
# Dateirechte für den non-root-Container und startet den Stack neu.
|
|
#
|
|
# Im Container (als root) ausführen:
|
|
# bash /opt/openbureau/cms/update.sh
|
|
set -euo pipefail
|
|
|
|
# Repo-Root = eine Ebene über diesem Skript (cms/..).
|
|
ROOT="$(cd "$(dirname "$0")/.." && pwd)"
|
|
cd "$ROOT"
|
|
|
|
# Git läuft hier als root auf einem Repo, das dem Container-User (uid 1000)
|
|
# gehört → ohne das meckert Git über „dubious ownership".
|
|
git config --global --add safe.directory "$ROOT" 2>/dev/null || true
|
|
|
|
echo "→ git pull…"
|
|
# kong.yml wird beim Deploy lokal gerendert (CORS-Origin eingesetzt). Vor dem
|
|
# Pull auf die versionierte Vorlage (mit __CORS_ORIGIN__) zurücksetzen, sonst
|
|
# kollidiert der Pull mit der lokalen Änderung.
|
|
git checkout -- cms/kong.yml 2>/dev/null || true
|
|
git pull --ff-only
|
|
|
|
cd "$ROOT/cms"
|
|
|
|
# CORS-Origin aus SITE_URL (.env) in kong.yml einsetzen — eine Quelle der Wahrheit.
|
|
ORIGIN="$(grep -E '^SITE_URL=' .env | head -1 | cut -d= -f2-)"
|
|
if [ -n "${ORIGIN:-}" ]; then
|
|
sed -i "s|__CORS_ORIGIN__|${ORIGIN}|g" kong.yml
|
|
echo "✓ CORS-Origin gesetzt: ${ORIGIN}"
|
|
else
|
|
echo "WARN: SITE_URL in .env nicht gefunden — kong.yml-Origin bleibt Platzhalter."
|
|
fi
|
|
|
|
# Der CMS-Container läuft als uid 1000 und muss das ganze Repo schreiben können
|
|
# (Hugo baut public/, schreibt content/). git pull als root zieht neue Dateien
|
|
# als root → hier wieder geradeziehen.
|
|
chown -R 1000:1000 "$ROOT"
|
|
echo "✓ Dateirechte (uid 1000) gesetzt."
|
|
|
|
echo "→ docker compose up…"
|
|
docker compose up -d --build
|
|
# kong liest die declarative config nur beim Start — nach kong.yml-Änderung neu.
|
|
docker compose restart kong
|
|
echo "✓ Stack neu gestartet."
|
|
|
|
# Kurzer Healthcheck (localhost im LXC, unabhängig von BIND_ADDR).
|
|
PORT="$(grep -E '^APP_PORT=' .env | head -1 | cut -d= -f2-)"; PORT="${PORT:-8080}"
|
|
sleep 2
|
|
if curl -fsS -I "http://127.0.0.1:${PORT}/" >/dev/null 2>&1; then
|
|
echo "✓ Seite antwortet auf :${PORT}."
|
|
else
|
|
echo "WARN: Seite antwortet (noch) nicht auf :${PORT} — 'docker compose ps' prüfen."
|
|
fi
|