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
+23
-5
@@ -15,6 +15,7 @@ import {
|
||||
schliesseAlleVerbindungen,
|
||||
standardMandant,
|
||||
} from './mandanten.js';
|
||||
import { ericStatus } from './elster/eric.js';
|
||||
import { mandantenRouten, mandantenScoping } from './routes/mandanten.js';
|
||||
import { stammdatenRouten } from './routes/stammdaten.js';
|
||||
import { buchungsRouten } from './routes/buchungen.js';
|
||||
@@ -59,13 +60,30 @@ for (const signal of ['SIGINT', 'SIGTERM'] as const) {
|
||||
});
|
||||
}
|
||||
|
||||
/*
|
||||
* Standardmäßig nur auf dem Rechner selbst erreichbar – hier liegen Steuerdaten.
|
||||
* Im Container ist 0.0.0.0 nötig, sonst kommt keine Verbindung von außen an;
|
||||
* die Absicherung übernimmt dort die Portfreigabe (127.0.0.1:3311:3311).
|
||||
*/
|
||||
const host = process.env.HOST ?? '127.0.0.1';
|
||||
const port = Number(process.env.PORT ?? 3311);
|
||||
await app.listen({ port, host: '127.0.0.1' });
|
||||
console.log(`open-eur-webapp läuft auf http://127.0.0.1:${port}`);
|
||||
await app.listen({ port, host });
|
||||
if (host !== '127.0.0.1' && host !== 'localhost') {
|
||||
console.log(
|
||||
`Achtung: Der Server lauscht auf ${host} und ist damit nicht auf diesen Rechner beschränkt.`,
|
||||
);
|
||||
}
|
||||
console.log(`open-eur-webapp läuft auf http://${host === '0.0.0.0' ? 'localhost' : host}:${port}`);
|
||||
// Im Container gibt es keine .env – die Konfiguration kommt über die Umgebung.
|
||||
// Deshalb wird der tatsächliche ERiC-Zustand gemeldet, nicht nur die Dateilage.
|
||||
const eric = ericStatus();
|
||||
console.log(
|
||||
envDatei
|
||||
? `Konfiguration aus ${envDatei} geladen.`
|
||||
: 'Keine .env gefunden – ELSTER läuft im Simulationsmodus (Vorlage: .env.beispiel).',
|
||||
envDatei ? `Konfiguration aus ${envDatei} geladen.` : 'Konfiguration aus der Prozessumgebung.',
|
||||
);
|
||||
console.log(
|
||||
eric.verfuegbar
|
||||
? `ELSTER: ERiC eingebunden${eric.testmodus ? ' (Testmerker gesetzt)' : ''}.`
|
||||
: `ELSTER: Simulationsmodus, es wird nichts übermittelt (${eric.meldung}).`,
|
||||
);
|
||||
if (start.uebernommen) {
|
||||
console.log('Vorhandene data/euer.sqlite als Mandant "standard" übernommen (Datei unverändert).');
|
||||
|
||||
Reference in New Issue
Block a user