我有多个服务运行每个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名称时,都会响应...
我该如何解决这个问题?我使用不好的做法?
我已经尝试过: - 更改每个撰写文件中的名称
答案 0 :(得分:1)
我认为选项是:
在每个撰写文件中将名称更改为不同,我知道您已尝试过,例如:
version: '2'
services:
mysql1:
image: "mysql"
[...]
连接到每个容器时使用完全限定名称,例如service1_mysql_1
和service2_mysql_1
。它不是理想的,但可以通过使用container_name
选项明确设置来修复此名称:
version: '2'
services:
mysql:
image: "mysql"
container_name: my-service1-mysql
[...]
然后,需要连接到anetwork
上的此数据库的容器可以使用主机名my-service1-mysql