mirror of
https://github.com/reconurge/flowsint.git
synced 2026-06-10 00:30:17 -05:00
[GH-ISSUE #180] [Docs ] - API 502 Bad Gateway - Podman Compatibility - Windows #2543
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Originally created by @nidorx on GitHub (Jun 6, 2026).
Original GitHub issue: https://github.com/reconurge/flowsint/issues/180
Problem
When running
docker-compose.prod.ymlwith Podman Compose, the frontend nginx fails to resolve theapiservice hostname, resulting in502 Bad Gatewayon all/api/requests.Root cause
The nginx config inside
flowsint-appuses Docker's embedded DNS resolver:127.0.0.11is Docker Engine specific - it's a hardcoded IP where Docker runs its internal DNS server inside each container. Podman does not use this address. Instead, Podman's DNS resolver runs on the network gateway (typically10.89.0.1), which is written into the container's/etc/resolv.conf.Because
127.0.0.11:53has nothing listening in a Podman container, DNS resolution fails:Fix
1. Remove the Docker-specific resolver from
nginx.confIn
flowsint-app/nginx.conf, replace the resolver + variable pattern with a directproxy_pass:This makes nginx resolve
apiusing the system's DNS configuration (/etc/resolv.conf), which Podman sets up correctly.2. Mount the local
nginx.confinto the containerThe production compose file pulls a pre-built image from GHCR:
Since there is no
build:section, the container runs the baked-innginx.conffrom the registry image (which still has127.0.0.11). Mount the corrected local config as a volume:Then
Docker vs Podman DNS comparison
127.0.0.1110.89.0.1)/etc/resolv.confBy removing the hardcoded
127.0.0.11and letting nginx use the system resolver, the config works on both runtimes.Trade-off
Using
proxy_pass http://api:5001directly (withoutresolver+set) means nginx resolves theapihostname once at startup. If theapicontainer is recreated with a different IP, the nginx container must be restarted to pick up the new address. For typical compose deployments this is acceptable.