This is the classic "UI says the proxy is fine but the container DNS view disagrees" failure. host not found in upstream almost always means the proxy container cannot resolve the upstream hostname at worker start or on the first request after a network change — not that the app process is down. In Docker Compose I pin upstreams with the service name on the same user-defined network, avoid host.docker.internal unless the daemon actually exposes it, and I never point NPM at a hostname that only exists in the host's /etc/hosts.
Ops check after any network or rename: from inside the proxy container, resolve the upstream name and hit the port before touching the UI. If resolution fails, fix DNS/network first; reloading the proxy alone will keep logging the same error. Prefer stable service DNS over brittle IP entries, and after a recreate wait for the dependency to be reachable before the proxy workers warm the upstream. Log the exact hostname NPM embeds in the generated config — a typo there looks identical to a DNS outage.