fix(frontend): bind Next to 0.0.0.0 so healthcheck passes (unhealthy fix) #1075

Merged
bot-backend merged 1 commit from fix/frontend-healthcheck-hostname into main 2026-06-06 15:07:10 +00:00
Collaborator

Что

Чинит хронический (unhealthy) статус контейнера gendesign-frontend-1.

Корень (диагностирован на проде)

Next.js standalone server.js биндится на process.env.HOSTNAME || '0.0.0.0'. Docker авто-выставляет HOSTNAME = id контейнера → сервер слушал на hostname контейнера, а compose-healthcheck (TCP 127.0.0.1:3000) получал refused → контейнер вечно (unhealthy). Косметика (Caddy ходит по имени сервиса, сайт отдаёт 200), но мусорит в мониторинге и риск для service_healthy-зависимостей.

Фикс

ENV HOSTNAME=0.0.0.0 в runner-стейдже frontend/Dockerfile — канонический Next.js Docker-фикс. Сервер слушает все интерфейсы → healthcheck коннектится. Caddy по-прежнему достучится (Docker DNS по имени сервиса, не по HOSTNAME-env).

Проверка (post-deploy)

ssh gendesign 'docker ps --filter name=gendesign-frontend-1' → должно стать (healthy). Я проверю после деплоя.

## Что Чинит хронический `(unhealthy)` статус контейнера `gendesign-frontend-1`. ## Корень (диагностирован на проде) Next.js standalone `server.js` биндится на `process.env.HOSTNAME || '0.0.0.0'`. Docker авто-выставляет `HOSTNAME` = id контейнера → сервер слушал на hostname контейнера, а compose-healthcheck (`TCP 127.0.0.1:3000`) получал refused → контейнер вечно `(unhealthy)`. Косметика (Caddy ходит по имени сервиса, сайт отдаёт 200), но мусорит в мониторинге и риск для `service_healthy`-зависимостей. ## Фикс `ENV HOSTNAME=0.0.0.0` в runner-стейдже `frontend/Dockerfile` — канонический Next.js Docker-фикс. Сервер слушает все интерфейсы → healthcheck коннектится. Caddy по-прежнему достучится (Docker DNS по имени сервиса, не по HOSTNAME-env). ## Проверка (post-deploy) `ssh gendesign 'docker ps --filter name=gendesign-frontend-1'` → должно стать `(healthy)`. Я проверю после деплоя.
bot-backend added the
scope/frontend
site-finder
labels 2026-06-06 15:06:03 +00:00
bot-backend added 1 commit 2026-06-06 15:06:56 +00:00
fix(frontend): bind Next standalone to 0.0.0.0 so healthcheck passes
All checks were successful
CI / changes (push) Successful in 7s
CI / changes (pull_request) Successful in 6s
CI / backend-tests (push) Has been skipped
CI / backend-tests (pull_request) Has been skipped
Deploy / changes (push) Successful in 5s
Deploy / build-backend (push) Has been skipped
Deploy / build-worker (push) Has been skipped
Deploy / build-frontend (push) Successful in 2m46s
Deploy / deploy (push) Successful in 50s
b77e856d89
Docker auto-sets HOSTNAME to the container id; Next standalone's server.js
binds process.env.HOSTNAME, so it listened on the container hostname and the
compose healthcheck (TCP 127.0.0.1:3000) was refused → frontend container
chronically "(unhealthy)" (cosmetic: Caddy reaches it by service name and the
site serves 200). Pin HOSTNAME=0.0.0.0 — the canonical Next.js Docker fix.
Diagnosed on prod 2026-06-05.
bot-backend merged commit b77e856d89 into main 2026-06-06 15:07:10 +00:00
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: lekss361/gendesign#1075
No description provided.