Steuerkram/docs/update-backup.md

2.4 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

Datenbankmigrationen werden automatisch beim nächsten Container-Start eingespielt. Das Script scripts/migrate.php prüft beim Start, welche Migrations-Dateien noch nicht angewendet wurden, und führt sie der Reihe nach aus.

Vollständige Update-Anleitung

Schritt 1 – Datenbank sichern

bash scripts/backup.sh

Schritt 2 – Aktuellen Code holen

git pull

Schritt 3 – Container neu bauen und starten

docker compose up -d --build

Dieser Befehl baut das PHP-Image neu (falls sich Dockerfile oder composer.json geändert haben) und startet alle Container. Der Web-Container führt beim Start automatisch scripts/migrate.php aus.

Schritt 4 – Migrationen prüfen

docker compose logs web | grep migrate

Erwartete Ausgabe:

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

Falls ein Fehler auftritt, das Backup aus Schritt 1 einspielen:

docker compose exec -T db mariadb -u steuerkram -psteuerkram steuerkram \
  < ~/steuerkram_backup_YYYYMMDD_HHMM.sql

Schritt 5 – Anwendung prüfen

docker compose ps        # alle Container müssen "running" sein
docker compose logs web  # keine PHP-Fehler oder Exceptions

Kurzform ohne Systemd

bash scripts/backup.sh && git pull && docker compose up -d --build
docker compose logs web | grep migrate

Kurzform mit Systemd

bash scripts/backup.sh && git pull && docker compose build
sudo systemctl restart steuerkram
journalctl -u steuerkram | grep migrate