我正在尝试将Docker用作测试套件的一部分。 我有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
并且我的数据库将被挂载。
我能够使其正常工作的唯一方法是获取主机的IP。我按照here:$ ipconfig getifaddr en0
从而获取主机IP并使用它来从前端安装我的数据库,即192.168.1.42 | 27021
我遇到的问题是这个主机IP在各种环境中会有所不同,因为它被用作测试套件的一部分。它将用于具有不同操作系统的各种本地机器上,并称为Travis-ci。
是否有建议的方法在docker中对此主机IP进行硬编码,或者我是否必须创建一个能够解决主机问题的脚本并执行此操作sudo ifconfig lo0 alias 192.168.46.49
?
当我正在做的是拥有2个容器并希望其中一个能够从另一个容器中安装数据库时,看起来过于复杂?
答案 0 :(得分:1)
默认情况下,运行docker的主机为172.17.0.1
。你试过吗? (粗略地说,这是您计算机的本地主机)
此外,您可以链接容器并获得docker网络的好处:
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