Estou usando uma máquina host Linux com vários contêineres docker rodando com um deles comoGerenciador de proxy Nginx(de agora em diante: NPM), que é apenas Nginx com uma UI amigável.
O NPM expõe as portas 80 e 443 e redireciona o tráfego para cada contêiner de acordo com as regras de proxy especificadas, uma configuração antiga e regular de proxy reverso. Todos os contêineres são instruídos a se conectar a uma rede Docker ponte para que o NPM possa alcançá-los facilmente.
Tudo isso funciona. Agora tenho um novo serviço que precisa ser exposto também usando NPM, a diferença é que o serviço não roda em um container, mas sim na máquina host, e é acessível na porta 3711.
Ao fazer minha pesquisa e acabei com esta sugestão:
extra_hosts:
- "host.docker.internal:host-gateway"
Ao adicionar isso ao arquivo docker-compose no serviço NPM, você permite que ele alcance qualquer porta na máquina host e, de fato, fazendo um ping de dentro do contêiner NPM, obtive host.docker.internal
uma resposta. O problema é que depois de configurar a regra do proxy, como sempre faço:
Se eu tentar acessar o serviço pela Internet por ci-server.domain.com, recebo um 502. MAS se eu fizer ci-server.domain.com:3711 posso alcançá-lo!
Por que preciso adicionar a porta interna ao domínio?Todos os meus outros serviços executados em contêineres respondem a 80/443 e são redirecionados internamente para suas portas.