Steuerkram/docs/update-backup.md
2026-04-13 16:04:51 +02:00

2.8 KiB
Raw Blame History

Update & Backup

Backup

bash scripts/backup.sh

Das Skript erstellt einen Dump der Datenbank sowie ein Archiv der Uploads im Verzeichnis backups/. Die Rotation erfolgt nach folgendem Schema:

  • 7 Tages-Backups
  • 4 Wochen-Backups
  • 12 Monats-Backups

Ein flock-Lock verhindert parallele Läufe bei Verzögerungen.

Manuelles Backup

docker compose exec db mariadb-dump -u steuerkram -psteuerkram steuerkram \
  > ~/steuerkram_backup_$(date +%Y%m%d_%H%M).sql

Datenpersistenz

Pfad Inhalt
./data/mariadb/ MariaDB-Datenbankdateien
Docker Volume uploads Hochgeladene Belege

Beide Pfade liegen außerhalb des Containers und bleiben bei docker compose down erhalten.


Update

Für ein vollständiges Update steht scripts/update.sh bereit. Es führt alle notwendigen Schritte automatisch aus.

./scripts/update.sh

Das Script erledigt in dieser Reihenfolge:

  1. Voraussetzungen – Docker, Docker Compose und Git werden geprüft
  2. Backup – scripts/backup.sh wird vor jeder Änderung aufgerufen
  3. git pull – Code wird aktualisiert; geänderte Dateien werden erkannt
  4. Image-Rebuild – Das Docker-Image wird neu gebaut, wenn Dockerfile, composer.json, composer.lock, php/, apache/ oder docker-entrypoint.sh geändert wurden
  5. Container-Neustart – docker compose down --remove-orphans + up -d
  6. Healthcheck – Wartet bis die Datenbank healthy meldet (max. 120 s)
  7. Migrationen – scripts/migrate.php wird explizit ausgeführt (idempotent)
  8. Tests – Die Test-Suite wird ausgeführt und das Ergebnis angezeigt

Optionen

Option Bedeutung
--no-backup Backup überspringen (z. B. wenn gerade erst gesichert)
--no-tests Tests nicht ausführen (schnellerer Ablauf)
--force-rebuild Docker-Image immer neu bauen, unabhängig von Dateiänderungen

Migrationen

Datenbankmigrationen werden von scripts/migrate.php verwaltet. Das Script prüft, welche Migrations-Dateien noch nicht angewendet wurden, und führt sie der Reihe nach aus. Es wird sowohl vom Container-Entrypoint als auch von update.sh aufgerufen.

[migrate] Starte Migrations-Prüfung...
[migrate] Führe aus: NNN_beschreibung.sql
[migrate] N Migration(en) erfolgreich angewendet.

Migrationen können auch manuell ausgelöst werden:

docker compose exec web php scripts/migrate.php

Diagnose bei Fehlern

docker compose ps          # Container-Status
docker compose logs web    # Web-Container-Log (PHP-Fehler, Migrationen)
docker compose logs db     # Datenbank-Log

Falls ein Update fehlschlägt und ein Rollback nötig ist, das letzte Backup einspielen:

docker compose exec -T db mariadb -u steuerkram -psteuerkram steuerkram \
  < backups/steuerkram_db_YYYYMMDD_HHMM.sql