diff --git a/README.md b/README.md index 5407d28..c3189ab 100644 --- a/README.md +++ b/README.md @@ -95,7 +95,27 @@ Im **Portainer** als eigenes Stack anlegen (Inhalt von `readarchive-stack.yml`) *Deploy the stack* startet den Lauf, der Container endet danach und bleibt als „Exited" stehen. Für den nächsten Zeitraum nur die Variablen ändern und *Update the stack*. Der Haupt-Stack wird dabei nicht angefasst. -Beide Wege brauchen das Netz des laufenden Haupt-Stacks (`_default`, in `readarchive-stack.yml` als `external` eingetragen) sowie dieselben Zugangsdaten und `LOCALDIR` — auf der Kommandozeile aus einer `.env` neben der Datei, im Portainer aus den Stack-Variablen. Auch mit `-d influx` wird Mongo gebraucht, dort liegen die Metadaten der Sensoren. +Beide Wege brauchen dieselben Zugangsdaten und `LOCALDIR` — auf der Kommandozeile aus einer `.env` neben der Datei, im Portainer aus den Stack-Variablen. Auch mit `-d influx` wird Mongo gebraucht, dort liegen die Metadaten der Sensoren. + +**Der Netz-Name ist die Stolperstelle.** Das `docker-compose.yml` des Haupt-Stacks deklariert kein Netz — Compose legt für jedes Projekt automatisch `_default` an und hängt alle Services hinein; daher funktioniert `MONGOHOST: mongodb`. Bei Portainer ist der Projektname **der Stack-Name**. Heißt das Stack dort `noisesensors`, passt der in `readarchive-stack.yml` eingetragene Wert `noisesensors_default`; heißt es `laerm`, muss dort `laerm_default` stehen, sonst bricht der Lauf ab: + +~~~ +network noisesensors_default declared as external, but could not be found +~~~ + +Vor dem ersten Lauf also im Portainer unter *Networks* nachsehen (oder `docker network ls`) und den Namen in `readarchive-stack.yml` angleichen. Das Netz wird nur an einer Stelle erzeugt — im Haupt-Stack implizit. Es auch dort als `external` zu deklarieren, führt dazu, dass es niemand mehr anlegt. + +**Option: fester Netz-Name.** Wer die Abhängigkeit vom Stack-Namen loswerden will, benennt im Haupt-Stack das Default-Netz um: + +~~~yaml +networks: + default: + name: noisesensors_net +~~~ + +Kein Service braucht dafür einen eigenen `networks:`-Eintrag — die automatische Zuordnung bleibt, das Netz heißt nur fest `noisesensors_net`, und in `readarchive-stack.yml` steht dieser Name statt `_default`. Der Preis: Beim Umstellen wechseln alle Container das Netz und werden neu erzeugt, Mongo und Influx sind also kurz weg. Die Daten liegen auf Bind-Mounts und bleiben unangetastet — trotzdem gehört das in ein Wartungsfenster und nicht nebenbei erledigt. + +Umgekehrt gilt: Ein `networks:` an einem Service hebt dessen automatische Zuordnung auf. Wer dort etwas einträgt — etwa um *noise* zusätzlich ins Traefik-Netz zu hängen —, muss `default` mit aufführen, sonst erreicht der Service die übrigen Container des Stacks nicht mehr. Ein Tag dauert etwa zwei Minuten. Schlägt ein Influx-Write fehl, werden die betroffenen Sensoren am Ende aufgelistet und der Exit-Code ist ≠ 0 (im Portainer als „Exited (1)" sichtbar).