Bom dia!
host not found in upstream "web-financeiro" significa que o Nginx não consegue resolver o nome web-financeiro dentro da rede Docker no momento em que o container do api-gateway sobe.
Ou seja: para o Nginx, esse host não existe.
O que normalmente causa isso (em 99% dos casos):
O nome do serviço no docker-compose.yml não é web-financeiro
O Nginx resolve nome de serviço, não nome de container nem imagem.
Se no compose estiver algo como:
services:
web-financeiro:
então o upstream está certo.
Mas se estiver:
services:
web-financ:
ou web-financas, web-financeiro-ms, etc., o Nginx não vai achar.
O container do web-financeiro não está rodando ou caiu
Pelo print, ele aparece criado, mas vale confirmar se está realmente em execução quando o api-gateway sobe.
Se o serviço não está “up”, o DNS interno não resolve.
O api-gateway sobe antes do web-financeiro
depends_on ajuda na ordem, mas não garante que o serviço esteja pronto, só que o container foi iniciado.
O Nginx é chato: se não resolve o upstream na inicialização, ele morre.
Rede diferente entre os containers
Se o api-gateway estiver em uma network e o web-financeiro em outra, eles não se enxergam.
Checklist rápido pra resolver:
No docker-compose.yml, confirme:
web-financeiroapi-gateway e web-financeiro) estão na mesma networkNo api-gateway.conf, o upstream deve usar o nome do serviço, por exemplo:
upstream web-financeiro {
server web-financeiro:9501;
}
Se ainda cair na subida:
Suba primeiro:
docker compose up web-financeiro
Depois:
docker compose up api-gateway
O Nginx não encontra o serviço web-financeiro pelo DNS do Docker.
Ou o nome está diferente, o container não está rodando, ou eles não estão na mesma rede.