He estado usando una máquina host Linux con varios contenedores acoplables ejecutándose con uno de ellos comoAdministrador de proxy Nginx(de ahora en adelante: NPM), que es simplemente Nginx con una interfaz de usuario amigable.
NPM expone los puertos 80 y 443 y redirige el tráfico a cada contenedor según las reglas de proxy especificadas, una configuración de proxy inverso antigua y normal. Todos los contenedores reciben instrucciones de conectarse a una red Docker puente para que NPM pueda acceder a ellos fácilmente.
Todo eso funciona. Ahora tengo un nuevo servicio que también debe exponerse mediante NPM, la diferencia es que el servicio no se ejecuta en un contenedor sino en la máquina host y se puede acceder a él en el puerto 3711.
Al investigar y terminé con esta sugerencia:
extra_hosts:
- "host.docker.internal:host-gateway"
Al agregar eso al archivo docker-compose bajo el servicio NPM, le permite llegar a cualquier puerto en la máquina host y, de hecho, al hacer un ping desde el contenedor NPM obtuve host.docker.internal
una respuesta. El problema es que después de configurar la regla de proxy, como siempre hago:
Si intento acceder al servicio desde Internet a través de ci-server.domain.com, obtengo un 502. ¡PERO si lo hago a ci-server.domain.com:3711 puedo acceder a él!
¿Por qué necesito agregar el puerto interno al dominio?Todos mis demás servicios que se ejecutan en contenedores responden a 80/443 y son redirigidos internamente a sus puertos.