Docker Compose inyectando contenedores vinculados en v2

En v1 de Docker Compose, el /etc/hosts se actualiza con contenedores vinculados. P.ej

 $ cat /etc/hosts 127.0.0.1 localhost ::1 localhost ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters 172.17.0.2 networkingis networkingis_1 c381c79fb9c2 romantic_yonath 172.17.0.3 48d2ed7033a1 

Sin embargo, en v2, esto se hace a través de DNS, por lo que ya no hay inputs. Podría usar la tabla hosts para arrancar un equilibrador de carga; muy útil cuando se utiliza junto con el command de scale .

¿Hay algún método para inyectar estos durante la creación del contenedor?

El blog Nginx tiene esta publicación sobre el uso de DNS para Service Discovery con NGINX y NGINX Plus .

NGINX almacena en caching los loggings DNS hasta el próximo reinicio o recarga de la configuration, ignorando los valores TTL de los loggings.

Explica lo que estaba viendo, que después de reiniciar el contenedor, puede enrutar a nuevos nodos.

La sección Configuración del nombre de dominio en una variable tiene un ejemplo de una solución para el almacenamiento en caching al inicio.

 resolver 10.0.0.2 valid=10s; server { location / { set $backend_servers backends.example.com; proxy_pass http://$backend_servers:8080; } } 

Cuando utiliza una variable para especificar el nombre de dominio en la directiva proxy_pass, NGINX resuelve el nombre de dominio cuando expira su TTL.

Esta discusión sugiere que 127.0.0.11 será la IP del resolver dentro del contenedor.


Utilicé esta configuration localmente para confirmar que los cambios de DNS se reflejan después de escalar, y parece que funciona

 resolver 127.0.0.11 valid=5s; server { listen 80; location / { set $application_servers application; proxy_pass http://$application_servers:8080; } }