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