From d7c6f8c3489a1051346130e8a386b799cc7a148b Mon Sep 17 00:00:00 2001 From: archipelago Date: Sun, 28 Jun 2026 15:09:34 -0400 Subject: [PATCH] fix(mempool): health-check 127.0.0.1 not localhost (stops false-unhealthy loop) The archy-mempool-web health_check endpoint used http://localhost:8080. Inside the frontend image, wget resolves `localhost` to ::1 (IPv6) first, but nginx binds 0.0.0.0:8080 (IPv4) only -> the baked HealthCmd gets "connection refused" every probe -> container is perpetually unhealthy -> the reconciler recreates it forever (observed on .228: mempool container re-Started every ~3 min, Health=unhealthy). Proven live: in-container `wget http://localhost:8080/` = refused, `wget http://127.0.0.1:8080/` = OK. Pin the probe to 127.0.0.1 so it matches nginx's IPv4 bind. Updated both the source manifest and the embedded copy in releases/app-catalog.json (the catalog overlay wins over the disk manifest on fleet nodes, so the catalog copy is the one that actually reaches .228). Co-Authored-By: Claude Opus 4.8 (1M context) --- apps/archy-mempool-web/manifest.yml | 5 ++++- releases/app-catalog.json | 2 +- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/apps/archy-mempool-web/manifest.yml b/apps/archy-mempool-web/manifest.yml index 9a956224..6d84df8d 100644 --- a/apps/archy-mempool-web/manifest.yml +++ b/apps/archy-mempool-web/manifest.yml @@ -33,7 +33,10 @@ app: health_check: type: http - endpoint: http://localhost:8080 + # 127.0.0.1 not localhost: the image's wget resolves localhost to ::1 (IPv6) + # first, but nginx binds 0.0.0.0:8080 (IPv4) only -> localhost probe gets + # "connection refused" -> perpetual unhealthy -> health_monitor restart loop. + endpoint: http://127.0.0.1:8080 path: / interval: 30s timeout: 5s diff --git a/releases/app-catalog.json b/releases/app-catalog.json index 532a99c0..d72b92af 100644 --- a/releases/app-catalog.json +++ b/releases/app-catalog.json @@ -235,7 +235,7 @@ ], "health_check": { "type": "http", - "endpoint": "http://localhost:8080", + "endpoint": "http://127.0.0.1:8080", "path": "/", "interval": "30s", "timeout": "5s",