From a4e9918e2337401c2113809b67b9b379d299f4ec Mon Sep 17 00:00:00 2001 From: dfuhrmann3 Date: Thu, 30 Jul 2026 16:37:53 +0200 Subject: [PATCH] SMB-Zugangsdaten nach .env ausgelagert statt in docker-compose.yml. Co-Authored-By: Claude Opus 5 --- .env.example | 14 ++++++++++++++ .gitignore | 7 +++++++ README.md | 21 ++++++--------------- docker-compose.yml | 18 +++++++----------- 4 files changed, 34 insertions(+), 26 deletions(-) create mode 100644 .env.example diff --git a/.env.example b/.env.example new file mode 100644 index 0000000..b5b7856 --- /dev/null +++ b/.env.example @@ -0,0 +1,14 @@ +# Vorlage fuer die Zugangsdaten der Netzwerkfreigabe (Stapelbetrieb). +# +# Kopieren nach '.env' und ausfuellen: +# copy .env.example .env +# +# '.env' ist in .gitignore eingetragen und landet damit NICHT im Repository. +# Diese Vorlage hier enthaelt bewusst keine echten Werte und wird versioniert. +# +# Das Konto braucht Lese- UND Schreibrechte auf //FS01/Daten/Technik/AI - der Stapelbetrieb +# schreibt die fertigen E-Rechnungen zurueck und verschiebt die Quelldateien nach 'verarbeitet'. + +SMB_USER=dienstkonto +SMB_PASSWORD= +SMB_DOMAIN=SCITECH diff --git a/.gitignore b/.gitignore index ec5b059..9cda41b 100644 --- a/.gitignore +++ b/.gitignore @@ -4,6 +4,13 @@ models __pycache__/ *.pyc +# Zugangsdaten der Netzwerkfreigabe - duerfen NICHT ins Repository (.env.example ist die +# Vorlage ohne echte Werte und wird versioniert). +.env + +# Lokaler Ersatzordner, wenn keine Freigabe eingebunden ist +batch_data/ + # Nur lokal - nicht zum Betrieb des Tools noetig (Tests, Test-Config, Planungsdoku) docs/ tests/ diff --git a/README.md b/README.md index 475323f..14b4b2f 100644 --- a/README.md +++ b/README.md @@ -35,24 +35,15 @@ Der Stapelbetrieb liest Rechnungen aus einem Ordner und schreibt die fertigen E- Der Windows-Pfad wird dabei in Docker-Schreibweise angegeben: aus `\\FS01\Daten\Technik\AI` wird `//FS01/Daten/Technik/AI`. -```yaml -volumes: - 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" +**1. Zugangsdaten hinterlegen** – nicht in `docker-compose.yml`, sondern in einer `.env`-Datei. Diese ist in `.gitignore` eingetragen und landet nicht im Repository: + +```cmd +copy .env.example .env ``` -und beim Service: +Dann `.env` öffnen und Benutzer, Passwort und Domäne des Dienstkontos eintragen. Das Konto braucht Lese- **und** Schreibrechte auf der Freigabe. -```yaml -volumes: - - datev_austausch:/data -``` - -Beides steht auskommentiert in der Datei und muss nur aktiviert und um die Zugangsdaten ergänzt werden. Das Konto braucht Lese- **und** Schreibrechte. +**2. Volume aktivieren** – in `docker-compose.yml` den Block am Dateiende einkommentieren sowie beim Service `- datev_austausch:/data` statt `- ./batch_data:/data` verwenden. Beides steht dort vorbereitet. 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. diff --git a/docker-compose.yml b/docker-compose.yml index d59a280..05b6a78 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -10,18 +10,11 @@ services: # frei waehlbar - fuer neue Ordner muss diese Datei NICHT angefasst werden. - BATCH_ROOT_DIR=/data volumes: - # 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 + # Netzwerkfreigabe einbinden: die naechste Zeile einkommentieren und dafuer + # './batch_data:/data' darunter entfernen. Der Container arbeitet dann DIREKT auf der # Freigabe - es wird nichts kopiert oder synchronisiert. - # - # 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 - # # Vorbelegung ohne Freigabe: lokaler Ordner, damit der Container startet. Der # Stapelbetrieb findet darin nichts und weist darauf hin; die Einzelrechnung # funktioniert uneingeschraenkt. @@ -35,11 +28,14 @@ services: # 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. +# WICHTIG: Zugangsdaten stehen NICHT hier, sondern in der Datei '.env' (siehe .env.example). +# Diese Datei liegt im Git - ein hier eingetragenes Passwort waere im Repository sichtbar. +# Das Konto braucht Lese- UND Schreibrechte auf der Freigabe. +# # volumes: # 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" +# o: "username=${SMB_USER},password=${SMB_PASSWORD},domain=${SMB_DOMAIN},uid=1000,gid=1000,vers=3.0"