106 lines
2.4 KiB
Markdown
106 lines
2.4 KiB
Markdown
# Update & Backup
|
||
|
||
## Backup
|
||
|
||
```bash
|
||
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
|
||
|
||
```bash
|
||
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
|
||
bash scripts/backup.sh
|
||
```
|
||
|
||
#### Schritt 2 – Aktuellen Code holen
|
||
|
||
```bash
|
||
git pull
|
||
```
|
||
|
||
#### Schritt 3 – Container neu bauen und starten
|
||
|
||
```bash
|
||
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
|
||
|
||
```bash
|
||
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:
|
||
|
||
```bash
|
||
docker compose exec -T db mariadb -u steuerkram -psteuerkram steuerkram \
|
||
< ~/steuerkram_backup_YYYYMMDD_HHMM.sql
|
||
```
|
||
|
||
#### Schritt 5 – Anwendung prüfen
|
||
|
||
```bash
|
||
docker compose ps # alle Container müssen "running" sein
|
||
docker compose logs web # keine PHP-Fehler oder Exceptions
|
||
```
|
||
|
||
---
|
||
|
||
### Kurzform ohne Systemd
|
||
|
||
```bash
|
||
bash scripts/backup.sh && git pull && docker compose up -d --build
|
||
docker compose logs web | grep migrate
|
||
```
|
||
|
||
### Kurzform mit Systemd
|
||
|
||
```bash
|
||
bash scripts/backup.sh && git pull && docker compose build
|
||
sudo systemctl restart steuerkram
|
||
journalctl -u steuerkram | grep migrate
|
||
```
|