Obrigado a esta pergunta e responder aqui , eu pude perceber que eu tinha dois problemas acontecendo:
- os contêineres têm diferentes redes Docker padrão porque estou usando dois arquivos docker-compose.yml diferentes, imaginei meu proxy Ngnix funcionando independentemente de qualquer um dos meus contêineres de API por completo, incluindo o docker-compose, mais sobre esse problema abaixo
- o segundo problema é simplesmente quando tentei fazer proxy para 127.0.0.1:5023 que é localhost dentro do contêiner Ngnix, não a rede fora do contêiner de proxy Nginx
Assim, as diferentes redes padrão criadas pelo docker-compose para meu contêiner do docker de proxy Nginx e meu contêiner do docker da API são porque estou divertindo dois arquivos docker-compose.yml diferentes. Isso porque eu tenho o Jenkins para muitos microsserviços de API, então tenho arquivos independentes para compilar e eu precisava de um proxy Nginx para encaminhar solicitações na porta 80 para cada microsserviço.
Para testar isso, criei um docker-compose.yml para os dois contêineres, a API e o proxy Nginx:
version: '3'
services:
reverseproxy:
build:
context: ./
dockerfile: docker/nginxproxy/docker/Dockerfile
image: tsl.devops.reverseproxy.image
container_name: tsl.devops.reverseproxy.container
ports:
- "80:80"
apistaging:
build:
context: ./
dockerfile: docker/staging/Dockerfile
image: tsl.api.example.image
container_name: tsl.api.example.container
ports:
- "5023:5023"
environment:
ASPNETCORE_URLS: http://+:5023
Sim, ainda havia um problema, o proxy passava para o http //: 127.0.0.1:5023, esse encaminhamento permanece no contêiner do Docker do Nginx e nunca encontra a API em execução no host do Docker. Basta usar o docker -compose.yml nome do serviço para chegar a ele:
upstream accountstaging {
server apistaging:5023;
}
server {
listen 80;
server_name account.staging.mysite.com;
location / {
proxy_pass http://accountstaging;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Host $server_name;
}
}