1
resposta

[Dúvida] 026/01/23 18:37:38 [emerg] 1#1: host not found in upstream "web-financeiro" in /etc/nginx/conf.d/api-gateway.conf:5 nginx: [emerg] host not found in upstream "web-financeiro" in /etc/nginx/conf.d/api-gateway.conf:5

Como Resolver esse erro  do web financeiro juntamente disso que eu nãpo consigo subir o resto dos containers ?

1 resposta

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:

    • O serviço se chama exatamente web-financeiro
    • Ambos (api-gateway e web-financeiro) estão na mesma network
  • No 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.