我有一个带有 Mongoose 的 NodeJS 应用程序,并且有两个要连接的 mongodb 数据库。每个容器都在自己的容器中(app、mongodb1、mongodb2)。
mongodb1
有27017个曝光,mongodb2
有27018个曝光。
我的应用程序在连接到 mongodb1 时不会抛出任何错误,但在连接到 mongodb2 时抛出 MongooseServerSelectionError ECONNREFUSED。
我使用“mongodb://mongodb2:27018”从应用程序进行连接。
如果我从 Windows 主机使用 MongoDB Compass 连接到“mongodb://localhost:27018”,它可以正常工作。
在应用程序容器中,运行
ping mongodb2
或 ping mongodb2:27018
时,我得到正常响应。看来是可以达到的。
更多详情:
docker ps
:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
3d011a43e3d4 app:1.0.0 "docker-entrypoint.s…" 11 minutes ago Up 11 minutes 0.0.0.0:4030->4030/tcp app
efad9f43c7f1 custom-mongodb2:1.0.0 "docker-entrypoint.s…" 11 minutes ago Up 11 minutes 0.0.0.0:27018->27017/tcp mongodb2
418fbe9bc9c8 custom-mongodb1:1.0.0 "docker-entrypoint.s…" 11 minutes ago Up 11 minutes 0.0.0.0:27017->27017/tcp mongodb1
如何在特定端口运行 mongo docker 实例的答案似乎解决了问题,但我不知道为什么内部端口也必须更改。