mongodb - 如何在 docker-compose 中运行具有不同端口的多个 MongoDB?
问题描述
我正在尝试在一个 docker-compose 中运行两个 MongoDB。由于我想在每个数据库中存储不同的数据,我需要通过不同的端口来区分它们。如果我运行以下 docker-compose,端口 27017 一切正常,但我无法访问端口 27018。在控制台中,两种服务的一切看起来都一样,只有端口 27018 上的服务缺少以下日志:
NETWORK [initandlisten] 等待端口 27017 上的连接(显示端口 27017)
当我尝试在浏览器中访问这两个服务时,端口 27017 上的一个可以工作,而 27018 上的一个不工作。
如果有人能帮我解决这个问题,我很高兴。工作了很长时间。谢谢!
这是我的代码:
version: "3"
services:
mongo:
image: mvertes/alpine-mongo:4.0.1-0
volumes:
- mongoDBvolume:/data/db
ports:
- "27017:27017"
testmongo:
image: mvertes/alpine-mongo:4.0.1-0
command: mongod --port 27018
volumes:
- mongoDBvolume:/data/testdb
ports:
- "27018:27017"
volumes:
mongoDBvolume:
driver: local
解决方案
只需删除 command: mongod --port 27018
,因此它将位于容器内的端口 27017 上。
流程是这样的:
主机 27018 <--> docker bridge 27018:27017 <--> mongo 容器 27017
推荐阅读
- excel - Excel VBA:字符串比较不起作用
- python - python中detectMultiScale的OpenCV错误
- apache - apache catalina 将特定查询参数附加到 url
- php - Laravel 自定义 Facade 的奇怪行为 - Facade 覆盖单例定义
- reactjs - 如何在我的应用程序中获得 JSX 支持?
- javascript - react matrerial ui Error: Objects are not valid as a React child 如果您打算渲染一组子项,请改用数组
- pine-script - 在交易策略中使用 Tradingview Pine Script 警报
- typescript - TypeScript:如何从对象属性中提取值而不指定对象的所有属性
- openlayers - Openlayer 视图适合功能裁剪功能图标
- c# - WPF App(.NET Core),Visual Studio 不允许我添加 WPF 窗口