使用 docker-compose 访问本地主机和 docker 网络

Nir*_*han 6 docker docker-compose

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

现在我希望我的容器 A 也能访问 localhost。为此,当我添加了“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
Run Code Online (Sandbox Code Playgroud)

对于每个撰写文件,docker-compose 创建一个网络,所以在这种情况下,我是否也应该手动将容器分配到专用网络?或者是否有任何解决方法可以访问这两个网络?

Lin*_*nPy 10

尝试添加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
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)