# Aufruf: docker-compose up -d --build # # Die Anwendung läuft dann unter http://localhost:3311 # # Es werden bewusst keine benannten Volumes verwendet: die Buchhaltung liegt als # gewöhnliche SQLite-Dateien im Projektverzeichnis unter ./data und lässt sich # damit sichern, kopieren und einsehen, ohne Docker zu bemühen. version: "3.8" services: euer: build: context: . dockerfile: Dockerfile image: open-eur-buchhaltung:latest container_name: open-eur-buchhaltung restart: unless-stopped # An 127.0.0.1 gebunden: 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. ports: - "127.0.0.1:3311:3311" # Mit der UID des aufrufenden Kontos laufen, damit die Dateien in ./data # dem Host gehören und nicht root. UID/GID notfalls fest eintragen. user: "${UID:-1000}:${GID:-1000}" volumes: # Einziger Mount: die Daten bleiben im Projektverzeichnis. - ./data:/app/data # ERiC ist proprietär und darf nicht ins Image. Wer echt übermitteln will, # bindet die Installation vom Host ein und setzt die Pfade in .env. # - /opt/eric:/opt/eric:ro # - ./zertifikat.pfx:/app/zertifikat.pfx:ro environment: # Im Container muss auf allen Schnittstellen gelauscht werden, sonst # erreicht die Portfreigabe den Prozess nicht. HOST: 0.0.0.0 PORT: 3311 NODE_ENV: production TZ: Europe/Berlin # Die folgenden Werte kommen aus ./.env, sofern vorhanden. docker-compose # liest diese Datei automatisch für die Ersetzung ein; fehlt sie, greifen # die Vorgaben und die Anwendung läuft im ELSTER-Simulationsmodus. LOG_LEVEL: "${LOG_LEVEL:-warn}" EUER_DB: "${EUER_DB:-./data/euer.sqlite}" EUER_MANDANT: "${EUER_MANDANT:-}" ERIC_LIB_PATH: "${ERIC_LIB_PATH:-}" ERIC_PLUGIN_PATH: "${ERIC_PLUGIN_PATH:-}" ERIC_LOG_PATH: "${ERIC_LOG_PATH:-./data/eric-log}" ELSTER_ZERTIFIKAT: "${ELSTER_ZERTIFIKAT:-}" ELSTER_PIN: "${ELSTER_PIN:-}" ELSTER_HERSTELLER_ID: "${ELSTER_HERSTELLER_ID:-}" ELSTER_TESTMERKER: "${ELSTER_TESTMERKER:-}" # Die Anwendung schreibt außerhalb von /app/data nichts. read_only: true tmpfs: - /tmp security_opt: - no-new-privileges:true