使用docker-compose访问localhost和docker网络

时间:2019-07-04 07:09:20

标签: docker docker-compose

我在一个docker-compose文件中运行了两个不同的服务。我通过引用容器的服务名称来谈论每个服务。

现在,我希望我的容器A也访问本地主机。为此,当我添加“ network_mode = host”的配置时,但这会产生一个错误,指出容器A无法与容器B对话。

version: '2'

services:
  rocketchat:
    image: myimage
    environment:
      - MONGO_URL=mongodb://mongo:27017/dbname
    depends_on:
      - mongo
    ports:
      - 3000:3000
    network_mode: host

  mongo:
    image: mongo:3.2
    ports:
      - 27017:27017

对于docker-compose的每个撰写文件,它都会创建一个网络,因此在这种情况下,我也应该手动将容器分配给专用网络吗?还是有访问这两个网络的解决方法?

1 个答案:

答案 0 :(得分:1)

尝试添加links

version: '2'

services:
  rocketchat:
    image: myimage
    environment:
      - MONGO_URL=mongodb://mongo:27017/dbname
    depends_on:
      - mongo
    ports:
      - 3000:3000
    links:
      - mongo
    #network_mode: host

  mongo:
    image: mongo:3.2
    ports:
      - 27017:27017

,如果您使用链接,则不需要network_mode: host

编辑-其他解决方案:

version: '2'

services:
  rocketchat:
    image: myimage
    environment:
      - MONGO_URL=mongodb://localhost:27017/dbname
    depends_on:
      - mongo
    ports:
      - 3000:3000
    network_mode: host

  mongo:
    image: mongo:3.2
    ports:
      - 27017:27017
    network_mode: host