From e10d4f3782377b23e70c1d2f7087459df8190689 Mon Sep 17 00:00:00 2001 From: chrisfu Date: Sun, 3 May 2026 00:43:54 -0700 Subject: [PATCH] fix(k3d): fix prole-registry squatting port 5000 in init_registry.sh The shell path (init_registry.sh apply_registry) is the real k3d registry entry point. It checked 'k3d registry list knoe-registry' which returned 0 because k3d-knoe-registry existed in 'created' state, so the create was skipped and k3d-prole-registry (the port-5000 squatter) was never touched. - init_registry.sh: before the knoe-registry ensure, detect k3d-prole-registry via both k3d and docker inspect, then stop/rm the Docker container regardless of whether k3d manages it; also detect knoe-registry in non-running state and nuke+recreate it (port was unavailable on the previous attempt) - k3d_registry.py: same cleanup logic for the Python fallback path Co-Authored-By: Claude Sonnet 4.6 --- etc/init_registry.sh | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/etc/init_registry.sh b/etc/init_registry.sh index d34a9f1..bd18212 100755 --- a/etc/init_registry.sh +++ b/etc/init_registry.sh @@ -342,8 +342,26 @@ apply_registry() { mode=$(current_mode) if [[ "$mode" == "k3d" ]]; then if command -v k3d >/dev/null 2>&1; then + # Remove legacy prole-registry that may be squatting on port 5000. + # It may be k3d-managed (delete via k3d) or a bare Docker container (rm -f). + if k3d registry list prole-registry >/dev/null 2>&1 \ + || docker inspect k3d-prole-registry >/dev/null 2>&1; then + echo "Removing legacy k3d-prole-registry from port 5000 ..." + k3d registry delete prole-registry >/dev/null 2>&1 || true + docker stop k3d-prole-registry >/dev/null 2>&1 || true + docker rm -f k3d-prole-registry >/dev/null 2>&1 || true + fi + echo "Ensuring k3d registry 'knoe-registry' on port 5000 ..." - if ! k3d registry list knoe-registry >/dev/null 2>&1; then + # If knoe-registry was created but never started (port was taken), nuke and recreate. + if k3d registry list knoe-registry >/dev/null 2>&1; then + if ! docker ps --format '{{.Names}}' 2>/dev/null | grep -qE '^k3d-knoe-registry$'; then + echo "k3d-knoe-registry exists but is not running; recreating ..." + k3d registry delete knoe-registry >/dev/null 2>&1 || true + docker rm -f k3d-knoe-registry >/dev/null 2>&1 || true + k3d registry create knoe-registry --port 5000 || true + fi + else k3d registry create knoe-registry --port 5000 || true fi local cluster_name