我有多个服务运行每个 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 up 后。容器显示为
docker ps
.在命名 service1_mysql_1
和另一个 service2_mysql_1
.但是当我 ping
mysql
网络内的dns名称anetwork
, 双方回应...我应该如何解决这个问题?我正在使用不良做法?
我已经尝试过:
- 更改每个撰写文件中的名称
最佳答案
我认为选项是:
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
关于带有 docker-compose 的 Docker 容器主机名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49591334/