Files
hx-ki.com2/com2_fix_network.sh
2026-03-06 15:22:40 +00:00

81 lines
2.7 KiB
Bash
Executable File

#!/usr/bin/env bash
set -euo pipefail
cd /opt/hx-ki/com2-stack
F="docker-compose.yml"
NET="hxki-internal"
[ -f "$F" ] || { echo "FEHLT: $PWD/$F"; exit 1; }
echo "=== COM2: FIX NETWORK (hxki-internal external) ==="
# 1) Docker-Netzwerk auf Host sicherstellen
if ! docker network ls --format '{{.Name}}' | grep -q "^${NET}$"; then
echo "[1] Erzeuge Docker-Netzwerk: ${NET}"
docker network create "${NET}" >/dev/null
else
echo "[1] OK: Docker-Netzwerk existiert: ${NET}"
fi
# 2) Compose patchen: networks: hxki-internal: external: true
python3 - <<'PY'
from pathlib import Path
import re
p = Path("/opt/hx-ki/com2-stack/docker-compose.yml")
s = p.read_text()
net = "hxki-internal"
def ensure_network_block(txt: str) -> str:
# Wenn schon networks: existiert -> sicherstellen, dass hxki-internal drin ist + external:true
if re.search(r'(?m)^\s*networks:\s*$', txt):
# hat bereits hxki-internal block?
if re.search(r'(?m)^\s{2}' + re.escape(net) + r'\s*:\s*$', txt):
# ensure external: true darunter
# falls external fehlt, einfügen direkt nach net-block header
def repl(m):
block = m.group(0)
if re.search(r'(?m)^\s{4}external:\s*true\s*$', block):
return block
# external: true nach header einfügen
return block + " external: true\n"
txt = re.sub(
r'(?ms)^\s{2}' + re.escape(net) + r'\s*:\s*\n(?:^\s{4}.*\n)*',
repl,
txt
)
else:
# networks existiert, aber hxki-internal fehlt -> am Ende der networks-sektion einfügen
# wir hängen es direkt nach "networks:" an, falls keine weiteren networks existieren,
# ansonsten ans Ende der networks-liste (deterministisch: nach networks:-Header)
txt = re.sub(r'(?m)^(networks:\s*)$',
r'\1\n ' + net + ':\n external: true',
txt, count=1)
return txt
# Wenn networks fehlt -> ans Ende anhängen
return txt.rstrip() + f"\n\nnetworks:\n {net}:\n external: true\n"
s2 = ensure_network_block(s)
# Minimaler sanity cleanup: doppelte Leerzeilen nicht eskalieren
s2 = re.sub(r'\n{4,}', '\n\n\n', s2)
p.write_text(s2)
print("OK: networks/hxki-internal als external:true gesetzt.")
PY
echo "[3] VALIDATE"
docker compose config >/dev/null
echo "OK: Compose ist valide."
echo "[4] UP"
docker compose up -d --remove-orphans
echo "=== STATUS ==="
docker ps --format 'NAME={{.Names}} STATUS={{.Status}} PORTS={{.Ports}}'
echo "=== HXKI-INTERNAL ==="
docker network inspect "${NET}" --format '{{range $id,$c := .Containers}}{{println $c.Name}}{{end}}' | sort
echo "=== ENDE ==="