我在一个 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/