Closes#96. The portal nginx configs hardcode resolver 127.0.0.11 (Docker's embedded DNS) for their variable proxy_pass to the BFF, so on rootless podman (network-specific aardvark DNS) every proxied call 502'd — the portals loaded and login worked, but no in-app data flowed.
Add a shared /docker-entrypoint.d hook (apps/portal-nginx-resolver.sh, wired into all three portal Dockerfiles) that rewrites the resolver from the container's own /etc/resolv.conf at startup: a no-op on Docker (nameserver is 127.0.0.11) and correct on podman (rewrites to e.g. 10.89.0.1). nginx.conf is unchanged (the hardcoded value is the substitution anchor).
How verified
Built the behandel image and ran it on the compose network under podman: the hook rewrote the config to resolver 10.89.0.1, and GET /behandel/werkbak proxied to the BFF returning 401 (auth), not 502. On Docker the nameserver is 127.0.0.11 so the substitution is a no-op and CI/e2e behaviour is unchanged.
## What & why
Closes #96. The portal nginx configs hardcode `resolver 127.0.0.11` (Docker's embedded DNS) for their variable `proxy_pass` to the BFF, so on rootless **podman** (network-specific aardvark DNS) every proxied call 502'd — the portals loaded and login worked, but no in-app data flowed.
Add a shared `/docker-entrypoint.d` hook (`apps/portal-nginx-resolver.sh`, wired into all three portal Dockerfiles) that rewrites the resolver from the container's own `/etc/resolv.conf` at startup: a **no-op on Docker** (nameserver *is* 127.0.0.11) and **correct on podman** (rewrites to e.g. 10.89.0.1). nginx.conf is unchanged (the hardcoded value is the substitution anchor).
## How verified
Built the behandel image and ran it on the compose network under podman: the hook rewrote the config to `resolver 10.89.0.1`, and `GET /behandel/werkbak` proxied to the BFF returning **401** (auth), not 502. On Docker the nameserver is 127.0.0.11 so the substitution is a no-op and CI/e2e behaviour is unchanged.
The portal reverse proxies hardcoded Docker's embedded DNS (resolver 127.0.0.11); on rootless
podman the DNS is network-specific (aardvark), so every proxied BFF call 502'd. Add an
/docker-entrypoint.d hook that rewrites the resolver from the container's /etc/resolv.conf at
startup — a no-op on Docker (nameserver IS 127.0.0.11), correct on podman. Verified: the built
image rewrites to 10.89.0.1 and /behandel/werkbak proxies to the BFF (401, not 502).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
What & why
Closes #96. The portal nginx configs hardcode
resolver 127.0.0.11(Docker's embedded DNS) for their variableproxy_passto the BFF, so on rootless podman (network-specific aardvark DNS) every proxied call 502'd — the portals loaded and login worked, but no in-app data flowed.Add a shared
/docker-entrypoint.dhook (apps/portal-nginx-resolver.sh, wired into all three portal Dockerfiles) that rewrites the resolver from the container's own/etc/resolv.confat startup: a no-op on Docker (nameserver is 127.0.0.11) and correct on podman (rewrites to e.g. 10.89.0.1). nginx.conf is unchanged (the hardcoded value is the substitution anchor).How verified
Built the behandel image and ran it on the compose network under podman: the hook rewrote the config to
resolver 10.89.0.1, andGET /behandel/werkbakproxied to the BFF returning 401 (auth), not 502. On Docker the nameserver is 127.0.0.11 so the substitution is a no-op and CI/e2e behaviour is unchanged.