From 35139ab2b1d97c49a98d5d22279ded85feeba717 Mon Sep 17 00:00:00 2001 From: dfuhrmann3 Date: Thu, 30 Jul 2026 16:32:55 +0200 Subject: [PATCH] Netzwerkfreigabe per CIFS-Volume als empfohlenen Weg dokumentiert. Co-Authored-By: Claude Opus 5 --- README.md | 28 +++++++++++++++++++++++----- docker-compose.yml | 33 ++++++++++++++++++++++----------- 2 files changed, 45 insertions(+), 16 deletions(-) diff --git a/README.md b/README.md index d4acd32..475323f 100644 --- a/README.md +++ b/README.md @@ -31,18 +31,36 @@ cd E-Rechnung ### 2. Austauschordner einbinden (nur für den Stapelbetrieb) -Der Stapelbetrieb liest Rechnungen aus einem Ordner und schreibt die fertigen E-Rechnungen zurück. Dafür muss die Netzwerkfreigabe dem Container zugänglich gemacht werden – ein Windows-Pfad wie `\\FS01\Daten\Technik\AI` lässt sich **nicht** in der Oberfläche eintragen, sondern wird in `docker-compose.yml` gemountet: +Der Stapelbetrieb liest Rechnungen aus einem Ordner und schreibt die fertigen E-Rechnungen zurück. Die Netzwerkfreigabe wird dafür in `docker-compose.yml` eingetragen – der Container arbeitet dann **direkt** auf ihr, es wird nichts kopiert oder synchronisiert. + +Der Windows-Pfad wird dabei in Docker-Schreibweise angegeben: aus `\\FS01\Daten\Technik\AI` wird `//FS01/Daten/Technik/AI`. ```yaml volumes: - - /mnt/fs01/Daten/Technik/AI:/data + datev_austausch: + driver: local + driver_opts: + type: cifs + device: "//FS01/Daten/Technik/AI" + o: "username=DIENSTKONTO,password=GEHEIM,domain=SCITECH,uid=1000,gid=1000,vers=3.0" ``` -Wichtig: Binden Sie den **übergeordneten** Ordner ein, nicht einen einzelnen Unterordner. Alle Unterordner darunter sind dann in der Oberfläche frei wählbar, ohne dass diese Datei erneut angefasst werden muss. +und beim Service: -Alternativ kann Docker die Freigabe selbst per CIFS einhängen – der entsprechende Block steht auskommentiert am Ende von `docker-compose.yml`. Das benötigte Konto braucht Lese- **und** Schreibrechte. +```yaml +volumes: + - datev_austausch:/data +``` -Wird kein Ordner eingebunden, funktioniert die Einzelrechnung uneingeschränkt; der Stapelbetrieb weist dann auf den fehlenden Mount hin. +Beides steht auskommentiert in der Datei und muss nur aktiviert und um die Zugangsdaten ergänzt werden. Das Konto braucht Lese- **und** Schreibrechte. + +Wichtig: Binden Sie den **übergeordneten** Ordner ein, nicht einen einzelnen Unterordner. `Test1`, `Test2` und jeder künftige Unterordner sind dann in der Oberfläche frei wählbar, ohne dass diese Datei erneut angefasst werden muss. + +Ist die Freigabe auf dem Docker-Host bereits eingehängt, genügt stattdessen ein einfacher Bind-Mount ohne Zugangsdaten (`- /mnt/fs01/Daten/Technik/AI:/data`). + +Ein Eintippen des Pfads in der Oberfläche ist nicht möglich: Die Anwendung läuft auf dem Server, der Browser auf Ihrem PC – ein dort gewählter Pfad wäre für den Server bedeutungslos, und Browser geben Web-Anwendungen aus Sicherheitsgründen keine Dateipfade. + +Wird nichts eingebunden, funktioniert die Einzelrechnung uneingeschränkt; der Stapelbetrieb weist dann auf den fehlenden Mount hin. ### 3. Container bauen und starten diff --git a/docker-compose.yml b/docker-compose.yml index a72b974..d59a280 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -10,25 +10,36 @@ services: # frei waehlbar - fuer neue Ordner muss diese Datei NICHT angefasst werden. - BATCH_ROOT_DIR=/data volumes: - # Netzwerkfreigabe fuer den Stapelbetrieb einbinden. Ein UNC-Pfad (\\FS01\Daten\...) laesst - # sich im Container nicht direkt verwenden - er muss hier gemountet werden. + # Die Netzwerkfreigabe \\FS01\Daten\Technik\AI wird unten als Volume 'datev_austausch' + # definiert und hier auf /data gelegt. Der Container arbeitet damit DIREKT auf der + # Freigabe - es wird nichts kopiert oder synchronisiert. # - # Variante A (empfohlen): Freigabe ist auf dem Docker-Host bereits eingehaengt, - # dann nur den Host-Pfad eintragen: + # Zum Aktivieren: die naechste Zeile einkommentieren, './batch_data:/data' entfernen und + # unten im Block 'volumes:' Benutzername und Passwort eintragen. + # - datev_austausch:/data + # + # Alternative, falls die Freigabe auf dem Docker-Host bereits eingehaengt ist (dann + # braucht es keine Zugangsdaten hier): # - /mnt/fs01/Daten/Technik/AI:/data # - # Variante B: Docker haengt die Freigabe selbst per CIFS ein - dazu unten den - # auskommentierten Block 'volumes:' am Dateiende aktivieren und hier verwenden: - # - datev_austausch:/data + # Vorbelegung ohne Freigabe: lokaler Ordner, damit der Container startet. Der + # Stapelbetrieb findet darin nichts und weist darauf hin; die Einzelrechnung + # funktioniert uneingeschraenkt. - ./batch_data:/data restart: unless-stopped -# Variante B fuer den Mount: Docker bindet die SMB-Freigabe selbst ein. Benoetigt ein Konto -# mit Lese- UND Schreibrechten auf der Freigabe. +# Netzwerkfreigabe als Volume. 'device' ist der Windows-Netzwerkpfad in Docker-Schreibweise: +# aus \\FS01\Daten\Technik\AI wird //FS01/Daten/Technik/AI. +# +# Es wird der UEBERGEORDNETE Ordner eingebunden, nicht ein einzelner Unterordner - dadurch +# sind Test1, Test2 und jeder kuenftige Unterordner im UI waehlbar, ohne diese Datei erneut +# anzufassen. +# +# Das angegebene Konto braucht Lese- UND Schreibrechte auf der Freigabe. # volumes: # datev_austausch: # driver: local # driver_opts: # type: cifs -# o: "username=DIENSTKONTO,password=GEHEIM,uid=1000,gid=1000,vers=3.0" -# device: "//FS01/Daten/Technik/AI" \ No newline at end of file +# device: "//FS01/Daten/Technik/AI" +# o: "username=DIENSTKONTO,password=GEHEIM,domain=SCITECH,uid=1000,gid=1000,vers=3.0"