- nginx.prod.conf: /w (Wallet-Landing, .pkpass, Google-Redirect, Logo) fehlte in der Backend-Location-Regex → Wallet-Routen landeten in der SPA (index.html). - update.sh: nginx.prod.conf ist ein Single-File-Bind-Mount (am Inode gepinnt); git reset ersetzt die Datei → nginx-Container force-recreaten, damit die aktuelle Config greift (statt nur reload). Live-Nodes bereits nachgezogen; Apple-Wallet-Pass funktioniert über Caddy. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
38 lines
1.7 KiB
Bash
38 lines
1.7 KiB
Bash
#!/usr/bin/env bash
|
|
# Baut/aktualisiert die App auf einem App-Node aus dem bereits ausgecheckten Repo.
|
|
# Erwartet: Repo unter dem Repo-Root vorhanden, backend/.env.prod.local + JWT-Keys da.
|
|
# Aufruf: DOMAIN=<domain> RUN_MIGRATIONS=true|false bash deploy/update.sh
|
|
# Genutzt von cloud-init (Erstprovisionierung) und vom Terraform-Code-Rollout.
|
|
set -euo pipefail
|
|
|
|
REPO_DIR="$(cd "$(dirname "$0")/.." && pwd)"
|
|
cd "$REPO_DIR"
|
|
DOMAIN="${DOMAIN:-localhost}"
|
|
RUN_MIGRATIONS="${RUN_MIGRATIONS:-false}"
|
|
COMPOSE="docker compose --project-directory $REPO_DIR -f deploy/compose/docker-compose.prod.yml"
|
|
|
|
# SPA bauen (Profil-/QR-Links zeigen auf die öffentliche Domain)
|
|
docker run --rm -e VITE_PUBLIC_BASE="https://$DOMAIN" -v "$REPO_DIR/frontend":/app -w /app \
|
|
node:25-alpine sh -c "npm ci && npm run build"
|
|
chown -R 1000:1000 "$REPO_DIR"
|
|
|
|
$COMPOSE up -d --build
|
|
# nginx.prod.conf ist ein Single-File-Bind-Mount (am Inode gepinnt). git reset ersetzt
|
|
# die Datei (neuer Inode) → Container neu erzeugen, damit die aktuelle Config gemountet wird.
|
|
$COMPOSE up -d --force-recreate nginx
|
|
sleep 8
|
|
|
|
# PHP-Abhängigkeiten + Autoloader (vendor/ gitignored, /app als Volume gemountet →
|
|
# im Container installieren; composer install erneuert den optimierten Autoloader,
|
|
# damit neue Klassen aus dem Update gefunden werden).
|
|
$COMPOSE exec -T -e COMPOSER_HOME=/tmp/composer php \
|
|
composer install --no-dev --optimize-autoloader --no-interaction --no-scripts
|
|
|
|
if [ "$RUN_MIGRATIONS" = "true" ]; then
|
|
$COMPOSE exec -T php php bin/console doctrine:migrations:migrate --no-interaction
|
|
# Erst-Befüllung (idempotent: überspringt, wenn admin@vcard4reseller.de existiert)
|
|
$COMPOSE exec -T php php bin/console app:seed || true
|
|
fi
|
|
|
|
$COMPOSE exec -T php php bin/console cache:clear
|