docker-compose - 如何通过主机连接 2 个 docker 容器?
问题描述
我有一个 nginx 代理容器作为主机,并希望通过 localhost 在 cms 和 mongo 容器之间进行通信。不幸的是 localhost:27017 在 cms 容器中不可用。
我应该如何将它们连接到我需要的工作?
docker-compose 配置是下一个:
version: '3'
services:
proxy:
image: nginx:1.15-alpine
restart: unless-stopped
privileged: true
ports:
- "80:80"
- "443:443"
network_mode: host
depends_on:
- cms
- mongo
cms:
container_name: cms
restart: unless-stopped
build: cms
env_file:
links:
- mongo
ports:
- '1337:1337'
mongo:
image: mongo
restart: always
ports:
- '27017:27017'
mongo-express:
image: mongo-express
restart: always
ports:
- 8081:8081
顺便说一句:mongo-express 可以访问 mongo 容器
解决方案
- 尝试使用其服务名称连接
mongo
到:cms
mongo:27017
或添加network_mode: host
到 mongo 服务规范:
mongo:
image: mongo
restart: always
network_mode: host
ports:
- '27017:27017'
和厘米:
cms:
container_name: cms
restart: unless-stopped
build: cms
network_mode: host
env_file:
links:
- mongo
ports:
- '1337:1337'
如果你想使用localhost:27017
in连接到 mongocms
推荐阅读
- git - Simple-git 在每个 git 命令上请求用户名和密码
- c++ - 创建消息接收侦听器时发生 Socket.IO 错误
- json - 如何比较 JOLT 转换中的字段值?
- css - 使用网格材质 UI 时出现响应式设计问题?
- php - 如何检查给定三个数组中的条件
- sql-server - 当所有国家/地区都没有在时区遵循夏令时
- visual-studio-app-center - 成功安装后无法运行 appcenter CLI
- javascript - 雷鸟扩展。如何设置消息编写器正文?
- android - 当应用被杀死时,Job Scheduler 和 WorkManager 被销毁
- java - 如何编辑由调色板组件创建的JTable?