我们通过Docker在自己的容器中运行一堆服务,并使用Docker Compose连接它们。
以前我们使用链接来引用其他主机,但问题是,如果一个容器重新启动,并获得一个新的IP地址,那么链接的节点将不知道这一点,将停止工作。
所以我们去创build一个networking并命名我们的主机,这工作正常。 然而,我们有一个模拟组件,我们用它来替代其他两个容器的testing。 我可以很容易地通过链接configuration,但我不知道如何做到这一点与networking。
原来是这样的:
mm: extends: file: common-service.yml service: mm-container links: - mock:enet - mock:ff
(其中mm是知道容器enet和ff的容器,在这个用于testing的组合文件中,我们将它们链接到mock容器。)
我试图添加这个而不是链接:
extra_hosts: - "enet:mock" - "ff:mock"
(其中enet和ff是模拟的主机名),但是当然这会将这些行按原样添加到/ etc / hosts,因此不会发生主机名parsing。
在Docker-land中有没有解决这个问题的方法,还是我们必须重写我们的嘲笑工具?
只要它只有两个,你可以给一个名字和一个主机名称“模拟”。 Docker把它们放在/etc/hosts
所以,像这样的:
mock: [definitions of how to run 'mock'] container_name: enet hostname: ff