我有多个服务运行每个
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上.
但是当我在网络网络内部ping mysql dns名称时,都响应…
我该怎么解决这个问题?我使用不好的做法?
我已经尝试过了:
– 更改每个撰写文件中的名称
最佳答案 我认为选项是:
>在每个撰写文件中将名称更改为不同,我知道您已经尝试过,例如:
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进行连接