具有docker-compose

时间:2018-03-31 19:00:01

标签: docker docker-compose

我有多个服务运行每个mysql数据库。 我正在使用docker-compose在docker中部署我的应用。 我需要所有这些服务都在同一个网络中。 我为每个服务使用不同的docker-compose文件。

我的问题是: 如果容器在不同的撰写文件中具有相同的名称,如何防止容器被命名为相同(在docker dns中)。

例:

service1.yml

version: '2'
services:
  mysql:
    image: "mysql"
    network:
      - anetwork
[...]

service2.yml

version: '2'
services:
  mysql:
    image: "mysql"
    network:
      - anetwork
[...]

这两个文件位于不同的文件夹中。启动所有docker-compose后。容器显示为docker ps。在名为service1_mysql_1和另一个service2_mysql_1上。 但是,当我在网络mysql内ping anetwork dns名称时,都会响应...

我该如何解决这个问题?我使用不好的做法?

我已经尝试过: - 更改每个撰写文件中的名称

1 个答案:

答案 0 :(得分:1)

我认为选项是:

  1. 在每个撰写文件中将名称更改为不同,我知道您已尝试过,例如:

    version: '2'
    services:
      mysql1:
        image: "mysql"
    [...]
    
  2. 连接到每个容器时使用完全限定名称,例如service1_mysql_1service2_mysql_1。它不是理想的,但可以通过使用container_name选项明确设置来修复此名称:

    version: '2'
    services:
      mysql:
        image: "mysql"
        container_name: my-service1-mysql
    [...]
    

    然后,需要连接到anetwork上的此数据库的容器可以使用主机名my-service1-mysql

  3. 进行连接