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

标签 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

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

最佳答案

尝试添加 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

关于docker - 使用 docker-compose 访问 localhost 和 docker 网络,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56882395/

相关文章:

docker - ffmpeg 和 docker 导致 averror_invaliddata

docker - 如何导出Docker容器中的数据?

postgresql - 使用 Tomcat 和 PostgreSQL 在 Docker 上部署应用程序

nginx - Docker 带有一个 nginx 和一个共享 UNIX 套接字的 uwsgi 容器

docker - 在 Windows 中使用 Docker Compose 运行 Kafka 时出现问题

Android 在 docker 容器中构建

docker - 在 compose 文件中指定 docker 网络范围

docker-compose 未知主机?

docker - 无法通过 CircleCI 集成和 docker-compose 连接到 docker 守护进程

linux - 如何在docker中查找FTP主机以及用户名和密码