fix(docker): keine Ports auf 0.0.0.0 und ein Overlay ohne Freigaben
CI / pruefen (push) Has been cancelled
CI / pruefen (push) Has been cancelled
Der Datenbankport wurde in beiden Betriebsarten auf 0.0.0.0 gelegt, obwohl ihn nur die Entwicklung braucht: im Container spricht die Anwendung "db:5432" ueber das Compose-Netz an, und backup.sh geht ueber docker exec. Auf einem Server lauschte Postgres damit im Netz, geschuetzt allein durch das Passwort aus der .env. Die Anleitung riet zwar zu 127.0.0.1, aber als Handgriff statt als Voreinstellung -- die falsche Richtung. Datenbank und Adminer binden jetzt von Haus aus auf 127.0.0.1. Liegen mehrere Stacks auf einem Host und regelt ein gemeinsamer Reverse Proxy den Zugang, braucht Nebula gar keinen Host-Port. docker-compose.server.yml nimmt beide Freigaben zurueck und haengt die Anwendung in ein geteiltes Netz. Das braucht !reset: Compose fuehrt "ports" beim Zusammenfuehren anhaengend statt ersetzend zusammen, eine leere Liste im Override wuerde also nichts loeschen. update.sh las die Adresse aus APP_PORT und haette in diesem Modus einen Port gemeldet, den es nicht gibt. Es fragt jetzt Docker und sagt sonst, dass nur das interne Netz erreichbar ist. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
+14
-9
@@ -164,19 +164,24 @@ if [ "$gesund" -ne 1 ]; then
|
||||
fi
|
||||
ok "Container meldet sich gesund"
|
||||
|
||||
# Die Anzeige der Adresse: aus APP_PORT kann "3000" oder "127.0.0.1:3000"
|
||||
# kommen – fuer die Ausgabe zaehlt nur, was hinter dem letzten Doppelpunkt steht.
|
||||
port_roh="$(sed -n 's/^[[:space:]]*APP_PORT[[:space:]]*=[[:space:]]*"\{0,1\}\([^"#]*\)"\{0,1\}[[:space:]]*$/\1/p' "$root/.env" | tail -n 1)"
|
||||
port_roh="${port_roh:-3000}"
|
||||
port="${port_roh##*:}"
|
||||
# Die Anzeige der Adresse. Nicht die .env raten, sondern Docker fragen: mit
|
||||
# docker-compose.server.yml veroeffentlicht der Container gar keinen Port und
|
||||
# haengt nur im Netz des Reverse Proxy. Dann gibt "port" nichts zurueck.
|
||||
adresse="$(docker compose --profile full port app 3000 2>/dev/null | tail -n 1 || true)"
|
||||
|
||||
if command -v curl >/dev/null 2>&1; then
|
||||
antwort_json="$(curl -fsS "http://127.0.0.1:${port}/api/health" 2>/dev/null || true)"
|
||||
[ -n "$antwort_json" ] && ok "Antwort: $antwort_json"
|
||||
if [ -n "$adresse" ]; then
|
||||
port="${adresse##*:}"
|
||||
if command -v curl >/dev/null 2>&1; then
|
||||
antwort_json="$(curl -fsS "http://127.0.0.1:${port}/api/health" 2>/dev/null || true)"
|
||||
[ -n "$antwort_json" ] && ok "Antwort: $antwort_json"
|
||||
fi
|
||||
wo="$adresse"
|
||||
else
|
||||
wo="im Docker-Netz (kein Host-Port veroeffentlicht)"
|
||||
fi
|
||||
|
||||
# ── Fertig ───────────────────────────────────────────────────
|
||||
version_jetzt="$(paket_version)"
|
||||
printf '\n%s%s✓ Nebula v%s laeuft auf %s%s\n' "$gruen" "$fett" "$version_jetzt" "$port_roh" "$aus"
|
||||
printf '\n%s%s✓ Nebula v%s laeuft auf %s%s\n' "$gruen" "$fett" "$version_jetzt" "$wo" "$aus"
|
||||
[ -n "$sicherung" ] && printf ' Sicherung vor dem Update: %s\n' "$sicherung"
|
||||
printf ' Log mitlesen: docker compose --profile full logs -f app\n\n'
|
||||
|
||||
Reference in New Issue
Block a user