docker - 使用 docker-compose 访问 localhost 和 docker 网络
问题描述
我在一个 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
推荐阅读
- python - 带有 numpy 随机集的奇怪 FFT 图
- filenet-p8 - 在 FileNet P8 中以编程方式将一个文件夹归档到另一个文件夹下
- c++ - std::dec、std::hex、std::oct 的二进制模拟
- amazon-web-services - EFS 会在实例终止后维护文件吗?
- javascript - 在 Google Apps 脚本中异步保存复选框
- powershell - 在表结构上添加 where-object?
- kotlin - kotlin - 如何在 Parceable 中创建一个可为空的布尔值
- pandas - 将不同权重的 DataFrame 列相乘
- android - 使用导航控制器android从一个方向导航到另一个方向时无法实例化片段?
- gmail - Gmail“+”号技巧,现在他们要求我从“+”号地址发送请求