Docker容器从另一个容器安装数据库

我试图使用Docker作为我的testing套件的一部分。 我有2个容器设置为:

version: "3" services: mongo_3_4: image: mongo:3.4 command: ["mongod", "--smallfiles"] ports: - "27021:27017" frontend: build: context: ./Dockerfiles/path/ dockerfile: Dockerfile ports: - "63175:63175" 

frontend有能力挂载一个mongoDb,我必须给它的主机和端口的凭据,例如本地我将使用localhost | 27021 localhost | 27021和我的数据库将被挂载。

目前我能得到它的唯一方法是获取主机的IP。 我通过这样描述来实现 : $ ipconfig getifaddr en0

从而得到主机IP,并使用它从前端安装我的数据库,即192.168.1.42 | 27021 192.168.1.42 | 27021

我的问题是这个主机IP在各种环境下会有所不同,因为它被用作testing套件的一部分。 它可以用在不同操作系统的各种本地机器上,比如说Travis-ci。

有一个build议的方式来从docker中硬编码这个主机IP,或者我将不得不创build一个脚本,解决主机,做这个sudo ifconfig lo0 alias 192.168.46.49

当我所做的只有2个容器,并且希望其中一个能够从另一个容器装入数据库时​​,似乎过于复杂了。

运行docker的主机默认为: 172.17.0.1 。 你尝试过吗? (大致来说就是你的电脑的本地主机)

此外,您可以链接容器,并获得dockernetworking的好处:

 version: "3" services: mongo_3_4: image: mongo:3.4 command: ["mongod", "--smallfiles"] ports: - "27021:27017" frontend: build: context: ./Dockerfiles/path/ dockerfile: Dockerfile ports: - "63175:63175" links: - mongo_3_4:mongo 

那么,你可以从frontend访问mongo,如下所示: mongo:27017