Docker-Compose-Setup ohne benannte Volumes
Der Container bringt die gebaute Anwendung mit; einziger Mount ist ./data:/app/data. Die Buchhaltung bleibt damit als gewöhnliche SQLite-Dateien im Projektverzeichnis und lässt sich ohne Docker sichern und einsehen. Der Server band bisher fest an 127.0.0.1 und wäre im Container von außen nicht erreichbar gewesen. Die Adresse ist jetzt über HOST einstellbar und bleibt außerhalb des Containers unverändert auf 127.0.0.1; im Container gilt 0.0.0.0, abgesichert über eine Portfreigabe, die nur auf 127.0.0.1 lauscht. Weitere Festlegungen: - Lauf unter der UID des aufrufenden Kontos, damit ./data nicht root gehört - schreibgeschütztes Containerdateisystem, beschreibbar nur /app/data und /tmp - .env wird nicht ins Image gebacken, sondern von docker-compose eingelesen - ERiC bleibt außen vor und ist bei Bedarf vom Host einzubinden Die Startmeldung nannte bisher nur, ob eine .env-Datei existiert. Im Container gibt es keine, obwohl die Konfiguration vollständig vorliegt – gemeldet wird jetzt der tatsächliche ERiC-Zustand. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
bf371c8118
commit
49ddaeccff
@@ -28,6 +28,47 @@ die Beispieldaten ein zweites Mal eingespielt und alle Auswertungen verdoppeln.
|
||||
`npm run seed -- reset` setzt die Bewegungsdaten zurück und legt sie neu an;
|
||||
dabei gehen auch selbst erfasste Buchungen verloren.
|
||||
|
||||
## Betrieb mit Docker
|
||||
|
||||
```bash
|
||||
cp .env.beispiel .env # optional, für ELSTER
|
||||
export UID GID=$(id -g) # damit ./data dem eigenen Konto gehört
|
||||
docker-compose up -d --build
|
||||
```
|
||||
|
||||
Danach läuft die Anwendung auf <http://localhost:3311>.
|
||||
|
||||
**Keine benannten Volumes.** Der einzige Mount ist `./data:/app/data` – die
|
||||
Buchhaltung liegt als gewöhnliche SQLite-Dateien im Projektverzeichnis und lässt
|
||||
sich sichern, kopieren und einsehen, ohne Docker zu bemühen. Der Container läuft
|
||||
mit der UID des aufrufenden Kontos, deshalb gehören die Dateien nicht root.
|
||||
|
||||
Weitere Festlegungen:
|
||||
|
||||
- **Port nur auf 127.0.0.1 veröffentlicht.** Die Anwendung kennt keine
|
||||
Benutzeranmeldung, und hier liegen Steuernummer und Umsätze. Für den Zugriff
|
||||
aus dem Netz gehört ein Reverse Proxy mit Authentifizierung davor.
|
||||
- Das Dateisystem des Containers ist schreibgeschützt (`read_only`), beschreibbar
|
||||
ist nur `/app/data` und ein `tmpfs` unter `/tmp`.
|
||||
- `.env` wird **nicht** ins Image gebacken. `docker-compose` liest die Datei für
|
||||
die Variablenersetzung und reicht die Werte als Umgebungsvariablen weiter.
|
||||
- **ERiC ist nicht enthalten** und darf es auch nicht sein. Wer echt übermitteln
|
||||
will, hebt in `docker-compose.yml` die Zeilen für `/opt/eric` und das
|
||||
Zertifikat auf und setzt die Pfade in `.env`.
|
||||
|
||||
Beim Start meldet der Container, woher die Konfiguration stammt und ob ERiC
|
||||
eingebunden ist:
|
||||
|
||||
```
|
||||
open-eur-webapp läuft auf http://localhost:3311
|
||||
Konfiguration aus der Prozessumgebung.
|
||||
ELSTER: Simulationsmodus, es wird nichts übermittelt (…).
|
||||
Mandanten: standard – aktiv ohne Angabe: standard
|
||||
```
|
||||
|
||||
Ohne Docker bindet sich der Server weiterhin an `127.0.0.1`; im Container setzt
|
||||
`HOST=0.0.0.0`, weil die Portfreigabe den Prozess sonst nicht erreicht.
|
||||
|
||||
## Mandanten
|
||||
|
||||
Jeder Mandant hat **eine eigene SQLite-Datei** unter `data/mandanten/`. Das ist
|
||||
|
||||
Reference in New Issue
Block a user