From 34c58ccc608ddbf6aabe1dfd45e61bb97b2ad49d Mon Sep 17 00:00:00 2001 From: Thorsten Bus Date: Sun, 14 Jun 2026 10:33:54 +0200 Subject: [PATCH] fix(deploy): make prod update complete and reliable - pin parser updates: bump dev-master in composer.lock to bust Docker composer-layer cache so propresenter/parser actually redeploys - add set -euo pipefail + git reset --hard to avoid silent partial deploys - docker compose v2/v1 fallback, build --pull, up --force-recreate, prune - boot-container: rm -rf public/build before asset sync to drop stale assets --- build/boot-container.sh | 3 +++ update-prod.sh | 35 ++++++++++++++++++++++++++++++++--- 2 files changed, 35 insertions(+), 3 deletions(-) diff --git a/build/boot-container.sh b/build/boot-container.sh index 1eccc2a..9e5296d 100755 --- a/build/boot-container.sh +++ b/build/boot-container.sh @@ -27,6 +27,9 @@ chmod -R 775 storage bootstrap/cache database 2>/dev/null || true rm -f /app/public/hot echo "[boot] Syncing pre-built Vite assets to bind-mounted public/ ..." +# Alte gehashte Assets entfernen, damit sich im bind-mounteten public/build +# kein Muell aus frueheren Builds ansammelt (cp -r merged nur, loescht nie). +rm -rf /app/public/build cp -r /app/public-build/* /app/public/ 2>/dev/null || true # Create RELATIVE storage symlink (public/storage → ../storage/app/public). diff --git a/update-prod.sh b/update-prod.sh index 83cadb3..e98a757 100755 --- a/update-prod.sh +++ b/update-prod.sh @@ -1,6 +1,35 @@ #!/bin/bash +set -euo pipefail -git fetch && git pull +cd "$(dirname "$0")" -docker-compose build -docker-compose up -d +# docker compose v2 bevorzugen, Fallback auf v1 +if docker compose version >/dev/null 2>&1; then + DC="docker compose" +else + DC="docker-compose" +fi + +echo "[deploy] Hole neuesten Stand von origin/master ..." +git fetch --all --prune +# Harter Reset: verhindert pull-Konflikte. Sicher, da public/build, storage/ +# und database/ gitignored sind und nicht angefasst werden. +git reset --hard origin/master + +# propresenter/parser ist dev-master und in composer.lock auf einen festen +# Commit gepinnt. Ohne Lock-Aenderung bleibt die Docker-Composer-Layer gecacht +# und ein neuer Parser-Stand wuerde NIE deployt. Daher Lock hier aktiv heben. +echo "[deploy] Aktualisiere dev-master Abhaengigkeit (propresenter/parser) ..." +docker run --rm -v "$PWD":/app -w /app composer:2 \ + update propresenter/parser --no-scripts --no-interaction + +echo "[deploy] Baue Image (inkl. aktualisierter Basis-Images) ..." +$DC build --pull + +echo "[deploy] Starte Container neu ..." +$DC up -d --force-recreate + +echo "[deploy] Raeume alte Images auf ..." +docker image prune -f + +echo "[deploy] Fertig."