Some checks failed
CI/CD / build-test-deploy (push) Has been cancelled
nginx resolves a plain `proxy_pass http://server:8080;` hostname once at config-load time. On a cold `docker compose up` that creates every container at once, the `server` container isn't always registered in Docker's embedded DNS yet by the time the client's nginx starts — nginx then fails immediately ("host not found in upstream") and doesn't retry, so it just crash-loops. Route the target through a variable instead (`set $upstream_server ...; proxy_pass $upstream_server;`) with an explicit `resolver`, which makes nginx resolve the hostname lazily per-request via Docker's DNS rather than once at startup. Also add `depends_on: [server]` on the client service so it at least doesn't start before the server container exists at all. Verified with repeated `docker compose down && docker compose up` cycles locally — this only reliably reproduced starting every container from nothing simultaneously, which prior local testing hadn't actually done (the server container had usually stayed running across rebuilds).