Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
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.