Konfigurationssystem¶
Das System verwaltet eine zentrale Konfigurationsdatei:
/app/config/config.json
Die Konfiguration wird auf zwei Arten gesteuert:
- Initialisierung über Umgebungsvariablen (ENV)
- Verwaltung über die Einstellungsseite oder direktes Bearbeiten der config.json
Initialisierung beim ersten Start¶
Wenn beim Start keine config.json vorhanden ist, wird sie aus den folgenden Umgebungsvariablen erstellt:
| ENV Variable | Feld in config.json | Beispielwert |
|---|---|---|
| APP_INSTANCE_NAME | general.instanceName | Feuerwehrkarte Berlin |
| APP_ADMIN_NAME | general.adminName | Max Mustermann |
| APP_ADMIN_CONTACT | general.adminContact | admin@example.com |
| APP_SMTP_HOST | mail.smtpHost | smtp.example.com |
| APP_SMTP_PORT | mail.smtpPort | 587 |
| APP_SMTP_USERNAME | mail.smtpUsername | user@example.com |
| APP_SMTP_PASSWORD | mail.smtpPassword | geheim123 |
Verhalten bei Docker Deployments¶
Mit gemounteter Konfigurationsdatei (Volume)¶
volumes:
- ./config:/app/config
- Beim ersten Start wird config.json erstellt (wenn sie noch nicht vorhanden ist)
- Danach wird die Konfiguration immer aus der Datei gelesen
- Änderungen über die Einstellungsseite oder direktes Bearbeiten der Datei sind permanent
- ENV Variablen haben danach keinen Einfluss (nur beim Erzeugen der Datei)
Ohne gemountete config.json (kein Volume)¶
# kein Volume für ./config
- Bei jedem Container-Start wird die config.json im Container-Verzeichnis neu erzeugt
- Dabei werden die aktuellen ENV-Variablen verwendet
- Änderungen über die Einstellungsseite gehen verloren beim Neustart
- Dieses Verhalten eignet sich für stateless Deployments mit ENV-only Steuerung
Zusammenfassung¶
| Deployment | Verhalten |
|---|---|
| Mit Volume | Konfigurationsdatei bleibt bestehen, UI-Änderungen werden gespeichert |
| Ohne Volume | Bei jedem Start neue Konfig basierend auf ENV, UI-Änderungen gehen verloren |
Empfehlung¶
- Für produktive Systeme: Mounten Sie das config-Verzeichnis als Volume
- Für temporäre oder Test-Deployments: ENV-only möglich (ohne Volume)