From c18e94e61e155d86deb9eefed4b93873903bbc7b Mon Sep 17 00:00:00 2001 From: irrlicht Date: Tue, 8 Sep 2026 16:27:43 +0200 Subject: [PATCH] Podman-Netz konfigurierbar, Vorgabe pasta, auf Prod bebop-net Prod laesst Phase 1 und Postgres in einem eigenen Netz laufen; die Verbindung zeigt dort auf den Rechnernamen "postgres", den nur Podmans DNS innerhalb von bebop-net aufloest. Die Unit hatte --network=pasta fest verdrahtet - damit waere der erste Lauf an der Namensaufloesung gescheitert, nicht an der Anmeldung. Jetzt ${P2_NETZ}, mit Environment=P2_NETZ=pasta als Vorgabe. Die Umgebungsdateien werden nach Environment= gelesen und ueberschreiben sie; p2.env.beispiel setzt bebop-net. Damit ist auch die Warnung vor host.containers.internal hinfaellig: sie gilt nur ohne eigenes Netz. Die Checkliste sagt das jetzt so. Co-Authored-By: Claude Opus 5 Claude-Session: https://claude.ai/code/session_01NupWEBPzsyohVPG47HsTz8 --- deploy/INBETRIEBNAHME.md | 12 ++++++------ deploy/p2.env.beispiel | 11 ++++++++--- deploy/wurzelwerk-p2.service | 13 ++++++++++--- 3 files changed, 24 insertions(+), 12 deletions(-) diff --git a/deploy/INBETRIEBNAHME.md b/deploy/INBETRIEBNAHME.md index 2f635e2..bb6a04c 100644 --- a/deploy/INBETRIEBNAHME.md +++ b/deploy/INBETRIEBNAHME.md @@ -39,7 +39,7 @@ JSON-Dateien. Ohne diesen Schritt läuft Modul 4 durch und löst nichts auf, **ohne zu scheitern** — der teuerste stille Fehler der ganzen Einrichtung. ```sh -podman run --rm --network=pasta \ +podman run --rm --network=bebop-net \ --env-file ~/.config/wurzelwerk/database.env \ localhost/wurzelwerk-p2 lexikon.py --laden ``` @@ -48,10 +48,10 @@ Erwartet: `person 5631`, `organisation 2319`, `partei 682`, `staat 195`, `amt 29`, `amtsinhaber 418`. Die `Ueberschneidung:`-Zeilen sind die Betriebssicht auf Doppelspitzen und Bremer Bürgermeister, kein Fehler. -Läuft der Container hier in einen Verbindungsfehler, zeigt `DATABASE_URL` -vermutlich auf `127.0.0.1`. Aus dem Container heraus ist das der Container -selbst; nötig ist `host.containers.internal`. Dann in `p2.env` überschreiben -(Schritt 4), statt `database.env` anzufassen — die gehört Phase 1 mit. +Das Netz ist nicht schmückend: `DATABASE_URL` zeigt auf den Rechnernamen +`postgres`, und den löst nur Podmans DNS innerhalb von `bebop-net` auf. +Ohne `--network=bebop-net` scheitert die Namensauflösung, nicht die +Anmeldung — die Fehlermeldung nennt dann den Namen, nicht das Passwort. ## 3. Modell-Volume anlegen und einmal füllen @@ -64,7 +64,7 @@ nicht aus dem Timer: der Erstbestand über den gesamten Korpus dauert etwa 17 Minuten je 5000 Items, und `TimeoutStartSec=1800` ist dafür knapp. ```sh -podman run --rm --network=pasta --memory=8g --shm-size=1g \ +podman run --rm --network=bebop-net --memory=8g --shm-size=1g \ --volume wurzelwerk-modelle:/cache:U \ --env-file ~/.config/wurzelwerk/database.env \ --env OMP_NUM_THREADS=4 --env HF_HUB_OFFLINE=0 \ diff --git a/deploy/p2.env.beispiel b/deploy/p2.env.beispiel index ba2a2f4..7867915 100644 --- a/deploy/p2.env.beispiel +++ b/deploy/p2.env.beispiel @@ -1,12 +1,17 @@ # Nach ~/.config/wurzelwerk/p2.env kopieren und ausfuellen. chmod 600. # Enthaelt Zugangsdaten und gehoert nicht ins Repo. +# Das Podman-Netz, in dem der Lauf haengt. Auf Prod bebop-net: dort loest +# Podmans DNS den Rechnernamen "postgres" auf, den DATABASE_URL benutzt. +# Ohne eigenes Netz ist pasta richtig, dann aber muss in DATABASE_URL +# host.containers.internal stehen. +P2_NETZ=bebop-net + # Die Datenbankverbindung steht auf Prod bereits in # ~/.config/wurzelwerk/database.env; die Unit liest beide Dateien. Hier nur -# setzen, wenn Phase 2 eine andere braucht - etwa weil database.env auf -# 127.0.0.1 zeigt, was aus dem Container heraus ins Leere laeuft. +# setzen, wenn Phase 2 eine andere braucht. # -# DATABASE_URL=postgresql://wurzelwerk:PASSWORT@host.containers.internal:5432/wurzelwerk +# DATABASE_URL=postgresql://wurzelwerk:PASSWORT@postgres:5432/wurzelwerk # Threadzahl. Geht in die coder_version ein - eine Aenderung erzeugt einen # neuen Vektorbestand. Prod hat 16 Threads, 4 laeuft ueberall. diff --git a/deploy/wurzelwerk-p2.service b/deploy/wurzelwerk-p2.service index ea8b7a8..5e03bd4 100644 --- a/deploy/wurzelwerk-p2.service +++ b/deploy/wurzelwerk-p2.service @@ -21,14 +21,21 @@ Type=oneshot # nur Phase 2 angeht; wird dort DATABASE_URL noch einmal gesetzt, gewinnt sie, # weil systemd spaetere Dateien spaeter liest. # -# Beide muessen aus dem Container heraus aufloesbar sein: der Rechnername in -# DATABASE_URL darf nicht 127.0.0.1 sein, sondern host.containers.internal. +# Der Rechnername in DATABASE_URL muss aus dem Container heraus aufloesbar +# sein. Auf Prod steht dort "postgres" - der Containername, den Podmans DNS +# im Netz bebop-net aufloest. Auf einer Maschine ohne eigenes Netz waere es +# host.containers.internal; 127.0.0.1 ist es in keinem der beiden Faelle, +# das zeigt aus dem Container auf den Container. +# +# Vorgabe fuer das Netz, von den Umgebungsdateien ueberschreibbar - sie +# werden nach Environment= gelesen und gewinnen deshalb. +Environment=P2_NETZ=pasta EnvironmentFile=%h/.config/wurzelwerk/database.env EnvironmentFile=-%h/.config/wurzelwerk/p2.env TimeoutStartSec=1800 ExecStart=/usr/bin/podman run --rm \ --name wurzelwerk-p2-lauf \ - --network=pasta \ + --network=${P2_NETZ} \ --memory=8g --shm-size=1g \ --volume wurzelwerk-modelle:/cache:U \ --env DATABASE_URL \