Tengo dos aplicaciones docker-compose:
Quiero ejecutarlos en la misma máquina host y colocar un proxy de contenedor nginx para enrutar las solicitudes entrantes a los servicios correctos dentro de cada una de las aplicaciones de docker-compose.
Creo que necesito tener un solo contenedor nginx que se ejecute por separado de las dos aplicaciones de composición de ventana acoplable. Anteriormente usé nginx-proxy , pero mi enrutamiento se volvió más complejo, por lo que quiero ejecutar mi propia instancia de nginx ahora.
docker run
el contenedor nginx, obtengo: host not found in upstream "MY_CONTAINER_HOST_NAME"
, lo que sugiere que el nombre de host de mi aplicación no se resuelve desde el contenedor nginx.nginx-proxy debería ser lo suficientemente bueno, siempre que sea compatible con una red adjunta de docker swarm ( problema 520 , aún pendiente)
También podría considerar vfarcic/docker-flow-proxy
, una manera fácil de reconfigurar el proxy cada vez que se implementa un nuevo servicio o cuando se escala un servicio.
Consulte " Integración de proxy con Docker Swarm (Tour Around Docker 1.12 Series) " para ver un ejemplo concreto.
Se me ocurren 2 opciones para esto:
Primero:
Ejecute ambas aplicaciones y nginx en la misma red definida por el usuario de docker. Para hacer esto, primero debe crear una red definida por el usuario:
docker network create appnet
Luego, cambie sus archivos acoplables para usar la red de la aplicación como externa (las redes externas no crearán una red ni usarán la existente)
Segundo:
Cree 2 redes definidas por el usuario, denominadas appnet1 y appnet2, adjunte a.com a appnet1 y b.com a appnet2 marcadas como red externa en docker-compose. Luego abra el nginx y adjúntelo a appnet1 y appnet2.
Cuando docker ejecuto el contenedor nginx, obtengo: host not found in upstream "MY_CONTAINER_HOST_NAME", lo que sugiere que el nombre de host de mi aplicación no se resuelve desde el contenedor nginx.
Tenga en cuenta: las redes definidas por el usuario proporcionarán un DNS interno para que pueda llamar a los contenedores en la misma red por el nombre del contenedor.
Ejemplo de red externa:
Si desea que sus contenedores se unan a una red preexistente, use la opción externa:
networks: default: external: name: my-pre-existing-network
En lugar de intentar crear una red llamada [nombre del proyecto]_default, Compose buscará una red llamada mi red preexistente y conectará los contenedores de su aplicación a ella.