在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/