在Docker Compose的v1中,使用链接的容器更新/etc/hosts文件。例如。

$ 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  redis redis_1 c381c79fb9c2 romantic_yonath
172.17.0.3  48d2ed7033a1

但是,在v2中,这是通过DNS完成的,因此不再有任何条目。我可以使用hosts表来引导负载均衡器;与scale命令结合使用时非常有用。

有什么方法可以在容器创建过程中注入(inject)这些?

最佳答案

Nginx博客在Using DNS for Service Discovery with NGINX and NGINX Plus上发布了此帖子。



说明您所看到的内容,即在重新启动容器之后,您可以路由到新节点。

在变量中设置域名一节提供了启动时缓存的解决方法示例。

resolver 10.0.0.2 valid=10s;

server {
    location / {
        set $backend_servers backends.example.com;
        proxy_pass http://$backend_servers:8080;
    }
}



This discussion建议127.0.0.11将是容器内解析器的IP。

我在本地使用此配置来确认DNS更改在扩展后得到反射(reflect),并且似乎可以正常工作
resolver 127.0.0.11 valid=5s;

server {
    listen 80;
    location / {
        set $application_servers application;
        proxy_pass http://$application_servers:8080;
    }
}

关于docker - Docker Compose在v2中注入(inject)链接的容器,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40262935/

10-12 22:16
查看更多