我在三个docker-compose文件中定义了服务。一个包含服务,另外两个是我的应用程序的蓝色和绿色实例。
所有服务共享相同的外部网络,并且使用external_links在组成文件之间公开服务
有时,当在蓝色和绿色之间切换时,IP会发生变化,我需要重新启动服务以更新服务容器上的IP。
有没有办法动态更新docker链接,这样我就不必重新启动我的nginx容器,造成一段时间的不可用?
发布于 2019-05-15 20:54:24
链接是一种错误的方式。链接通过修改容器的主机文件来工作,但该修改不会随着目标容器的替换而更新。由于类似这样的各种问题,它们在很大程度上已被弃用。
从您的撰写文件中删除链接,并将容器放在一个普通用户创建的网络上(即,不是几个默认docker提供的网络中的一个)。compose将为您的服务提供用户创建的网络(您可以使用docker network ls看到的名为${project}_default的默认网络),或者您可以在连接来自多个项目的容器时指定外部网络。
对于共享网络,docker将根据容器名称和任何网络别名为您提供DNS解析。使用docker-compose,您将为服务名称配置开箱即用的网络别名。因此,如果您有一个名为"web“的服务,您可以运行curl http://web:8080来访问该"web”服务的任何副本上的8080端口。如果您转换到群模式,这种用户体验是相同的,尽管它是使用VIP实现的,而不是DNS-RR,后者在滚动更新期间处理缓存的DNS条目等问题。
https://stackoverflow.com/questions/56146328
复制相似问题