Docker Compose在v2中注入链接容器

时间:2016-10-26 12:57:18

标签: docker docker-compose

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

$ 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命令一起使用时非常有用。

在容器创建过程中是否有任何方法可以注入这些方法?

1 个答案:

答案 0 :(得分:1)

Nginx博客在Using DNS for Service Discovery with NGINX and NGINX Plus上发布了这篇文章。

  

NGINX缓存DNS记录,直到下次重启或配置重新加载,忽略记录的TTL值。

解释您所看到的内容,重启容器后,您可以路由到新节点。

在变量中设置域名部分提供了一个在启动时进行缓存的变通方法的示例。

resolver 10.0.0.2 valid=10s;

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

当您使用变量在proxy_pass指令中指定域名时,NGINX会在其TTL到期时重新解析域名。

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

我在本地使用此配置来确认在缩放后反映DNS更改,并且它似乎正常工作

resolver 127.0.0.11 valid=5s;

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