2.8 KiB
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:
- Voraussetzungen – Docker, Docker Compose und Git werden geprüft
- Backup –
scripts/backup.shwird vor jeder Änderung aufgerufen - git pull – Code wird aktualisiert; geänderte Dateien werden erkannt
- Image-Rebuild – Das Docker-Image wird neu gebaut, wenn
Dockerfile,composer.json,composer.lock,php/,apache/oderdocker-entrypoint.shgeändert wurden - Container-Neustart –
docker compose down --remove-orphans+up -d - Healthcheck – Wartet bis die Datenbank
healthymeldet (max. 120 s) - Migrationen –
scripts/migrate.phpwird explizit ausgeführt (idempotent) - 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