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 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NupWEBPzsyohVPG47HsTz8
This commit is contained in:
irrlicht
2026-09-08 16:27:43 +02:00
co-authored by Claude Opus 5
parent 7cecc5c0cd
commit c18e94e61e
3 changed files with 24 additions and 12 deletions
+6 -6
View File
@@ -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. **ohne zu scheitern** — der teuerste stille Fehler der ganzen Einrichtung.
```sh ```sh
podman run --rm --network=pasta \ podman run --rm --network=bebop-net \
--env-file ~/.config/wurzelwerk/database.env \ --env-file ~/.config/wurzelwerk/database.env \
localhost/wurzelwerk-p2 lexikon.py --laden 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 `amt 29`, `amtsinhaber 418`. Die `Ueberschneidung:`-Zeilen sind die
Betriebssicht auf Doppelspitzen und Bremer Bürgermeister, kein Fehler. Betriebssicht auf Doppelspitzen und Bremer Bürgermeister, kein Fehler.
Läuft der Container hier in einen Verbindungsfehler, zeigt `DATABASE_URL` Das Netz ist nicht schmückend: `DATABASE_URL` zeigt auf den Rechnernamen
vermutlich auf `127.0.0.1`. Aus dem Container heraus ist das der Container `postgres`, und den löst nur Podmans DNS innerhalb von `bebop-net` auf.
selbst; nötig ist `host.containers.internal`. Dann in `p2.env` überschreiben Ohne `--network=bebop-net` scheitert die Namensauflösung, nicht die
(Schritt 4), statt `database.env` anzufassen — die gehört Phase 1 mit. Anmeldung — die Fehlermeldung nennt dann den Namen, nicht das Passwort.
## 3. Modell-Volume anlegen und einmal füllen ## 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. 17 Minuten je 5000 Items, und `TimeoutStartSec=1800` ist dafür knapp.
```sh ```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 \ --volume wurzelwerk-modelle:/cache:U \
--env-file ~/.config/wurzelwerk/database.env \ --env-file ~/.config/wurzelwerk/database.env \
--env OMP_NUM_THREADS=4 --env HF_HUB_OFFLINE=0 \ --env OMP_NUM_THREADS=4 --env HF_HUB_OFFLINE=0 \
+8 -3
View File
@@ -1,12 +1,17 @@
# Nach ~/.config/wurzelwerk/p2.env kopieren und ausfuellen. chmod 600. # Nach ~/.config/wurzelwerk/p2.env kopieren und ausfuellen. chmod 600.
# Enthaelt Zugangsdaten und gehoert nicht ins Repo. # 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 # Die Datenbankverbindung steht auf Prod bereits in
# ~/.config/wurzelwerk/database.env; die Unit liest beide Dateien. Hier nur # ~/.config/wurzelwerk/database.env; die Unit liest beide Dateien. Hier nur
# setzen, wenn Phase 2 eine andere braucht - etwa weil database.env auf # setzen, wenn Phase 2 eine andere braucht.
# 127.0.0.1 zeigt, was aus dem Container heraus ins Leere laeuft.
# #
# 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 # Threadzahl. Geht in die coder_version ein - eine Aenderung erzeugt einen
# neuen Vektorbestand. Prod hat 16 Threads, 4 laeuft ueberall. # neuen Vektorbestand. Prod hat 16 Threads, 4 laeuft ueberall.
+10 -3
View File
@@ -21,14 +21,21 @@ Type=oneshot
# nur Phase 2 angeht; wird dort DATABASE_URL noch einmal gesetzt, gewinnt sie, # nur Phase 2 angeht; wird dort DATABASE_URL noch einmal gesetzt, gewinnt sie,
# weil systemd spaetere Dateien spaeter liest. # weil systemd spaetere Dateien spaeter liest.
# #
# Beide muessen aus dem Container heraus aufloesbar sein: der Rechnername in # Der Rechnername in DATABASE_URL muss aus dem Container heraus aufloesbar
# DATABASE_URL darf nicht 127.0.0.1 sein, sondern host.containers.internal. # 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/database.env
EnvironmentFile=-%h/.config/wurzelwerk/p2.env EnvironmentFile=-%h/.config/wurzelwerk/p2.env
TimeoutStartSec=1800 TimeoutStartSec=1800
ExecStart=/usr/bin/podman run --rm \ ExecStart=/usr/bin/podman run --rm \
--name wurzelwerk-p2-lauf \ --name wurzelwerk-p2-lauf \
--network=pasta \ --network=${P2_NETZ} \
--memory=8g --shm-size=1g \ --memory=8g --shm-size=1g \
--volume wurzelwerk-modelle:/cache:U \ --volume wurzelwerk-modelle:/cache:U \
--env DATABASE_URL \ --env DATABASE_URL \