Docker容器从另一个容器

时间:2017-05-23 14:03:28

标签: mongodb docker travis-ci database

我正在尝试将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个容器并希望其中一个能够从另一个容器中安装数据库时,看起来过于复杂?

1 个答案:

答案 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