1.6 KiB
data/ – persistente Nutzdaten
Alles in diesem Verzeichnis ist Nutzdatenbestand, nicht Code. Es überlebt
Updates, git pull, git clean und Container-Neubauten und gehört in die
Datensicherung. Der Inhalt ist per .gitignore (data/*) vom Repo ausgenommen –
nur diese README ist eingecheckt.
| Verzeichnis | Inhalt | Gemountet in |
|---|---|---|
data/mariadb/ |
Datenbank (MariaDB-Datendateien) | nur db-Container: /var/lib/mysql |
data/belege/ |
Hochgeladene Belegdateien, nach Jahr/Belegnummer | web: /var/www/html/data/belege |
data/logo/ |
Firmenlogo (logo.png oder logo.jpg) |
web: /var/www/html/data/logo |
Warum außerhalb des Web-Roots
data/belege und data/logo liegen bewusst nicht unter public/. Beide
werden ausschließlich über die Anwendung ausgeliefert, die vorher Anmeldung und
Dateityp prüft:
- Belege über
/belege/{id}/file(BelegController::serveFile) - Logo über
/settings/logo/file(SettingsController::serveLogo)
Ein direkter Abruf per URL ist damit nicht möglich. In der Datenbank steht jeweils
nur der Pfad relativ zum zugehörigen Verzeichnis (belege.storage_path,
company_settings.logo_path) – kein Web-Pfad und kein absoluter Serverpfad.
Der web-Container sieht data/mariadb nicht; die Datenbankdateien sind
ausschließlich in den db-Container gemountet.
Datensicherung
# Datenbank
docker compose exec -T db mariadb-dump -usteuerkram -psteuerkram steuerkram > backup.sql
# Dateien
tar czf backup-dateien.tar.gz data/belege data/logo
Ein Backup ist nur zusammen vollständig: Ohne data/belege verweisen die
Beleg-Datensätze der Datenbank ins Leere.