Zum Inhalt

Bind-Mount-Discipline

Prinzip

Docker-Single-File-Bind-Mounts halten an der Host-Datei-Inode fest. Wenn ein Tool (Editor, sed, mv-replace) die Host-Datei neu schreibt, sieht der Container weiterhin den alten Inhalt. docker compose restart reicht nicht, nur --force-recreate löst den Mount neu auf.

Konsequenz: Configs für containerisierte Services im kora-platform-Stack werden als Dir-Mounts gemountet, nicht als Single-File-Mounts. Details siehe L-B3-06 in offene-todos.md.

Status im kora-platform-Stack

Vollständige Dir-Mount-Disziplin:

Service Host-Dir Container-Pfad Commit
kora-platform-mkdocs docs-kora/ /docs/ mkdocs-Hygiene (80d1c1b)
avs-prometheus monitoring/prometheus/ /etc/prometheus/ Cleanup03-01

Prometheus scrapt sowohl die AVS-Demo als auch den Platform-API — die Umstellung hier löst den konkreten Pain aus L-B3-06 (Prometheus-Scrape- Arbeit), auch wenn die Prometheus-Service-Definition im AVS-Demo-Compose liegt.

AVS-Demo-Stack (docker-compose.yml)

10 weitere Single-File-Bind-Mounts existieren im AVS-Demo-Stack. Sie wurden bewusst nicht umgestellt, weil der Stack per Go-Live v1.0.0 komplett abgeschaltet wird (Fundament §16 „frische Leinwand"):

Zeile Service Datei Grund
146 vllm-lb nginx-vllm-lb/nginx.conf.template AVS-Demo, post-Go-Live obsolet
195 avs-api CHANGELOG-avs-demo.md Static, wenig Friction
196 avs-api data/geoip/GeoLite2-City.mmdb Data-Lookup-DB, kein Config
237 nginx infra/nginx/nginx.conf AVS-Demo, post-Go-Live obsolet
239 nginx infra/nginx/.htpasswd_presentation AVS-Demo, Secret, selten geändert
240 nginx src/widget/demo-avs.html AVS-Demo, Static
241 nginx src/widget/chat-avs.html AVS-Demo, Static
264 avs-mkdocs mkdocs.yml AVS-Demo, post-Go-Live obsolet
266 avs-mkdocs CHANGELOG-avs-demo.md AVS-Demo, Static
404 keycloak infra/keycloak/avs-chatbot-realm.json Import-Once (nur beim ersten Realm-Create)

Arbeit an Stack-Artefakten mit Ablaufdatum wäre fehlallokiert. Falls jemand vor Go-Live doch ein konkretes Dev-Friction-Szenario an einer dieser Stellen erlebt, kann die Umstellung punktuell nachgezogen werden — das Muster ist durch Prometheus und mkdocs-Hygiene etabliert.

Bei neuen Services

Wenn neue Services in den kora-platform-Stack aufgenommen werden, gilt Config als Dir-Mount, nicht als Single-File-Mount.

  • Option A — Dir-Mount auf den erwarteten Container-Pfad (z.B. ./monitoring/prometheus:/etc/prometheus:ro). Voraussetzung: Container-Dir enthält keine Container-eigenen Files, die überschrieben würden. Sauberste Form.
  • Option B — Dir-Mount auf eigenen Pfad + Command-Override (--config.file=/etc/kora-config/…). Einsetzbar, wenn A nicht möglich, weil der Container-Pfad Container-eigene Files enthält.

Akzeptanzkriterium

Live-Edit-Test. Marker-Change am Host + docker restart → Container sieht den Marker:

MARKER="# live-edit-test-$(date +%s)"
echo "$MARKER" >> monitoring/prometheus/prometheus.yml
docker restart avs-prometheus
sleep 10
docker exec avs-prometheus grep "live-edit-test" /etc/prometheus/prometheus.yml
# erwartet: Treffer
git checkout monitoring/prometheus/prometheus.yml
docker restart avs-prometheus

--force-recreate als Fallback ist kein Akzeptanzkriterium — das ist genau, was mit Dir-Mount-Disziplin eliminiert wird.