javascript - 无法使用 nodeJS 连接到我的 mongoDB docker
问题描述
我有一个本地运行的 mongoDB docker,称为“some-mongo”。在同一台计算机上,我还运行了我的后端服务器(使用 nodeJS 制作)。问题是使用“mongoose”模块将我的 nodeJS 服务器连接到本地 mongo docker。
我通过运行以下命令启动了我的 mongoDB docker:
docker run --name some-mongo -d mongo
我的 nodeJS 服务器尝试连接到 mongo docker,如下所示:
const mongoose = require('mongoose');
const app = express();
//Connect to db
mongoose.connect('mongodb://local-host:27017/some-mongo')
.then(db => console.log('DB Mongo: connected'))
.catch(err => console.log(err));
问题是我收到以下错误:
Server on port 3000
{ MongoNetworkError: failed to connect to server [local-host:27017] on first connect [MongoNetworkError: getaddrinfo ENOTFOUND local-host local-host:27017]
at Pool.<anonymous> (/Users/bisite/Documents/Git/Trusted-Industry/TrustedIndustryFront/node_modules/mongodb/lib/core/topologies/server.js:431:11)
at Pool.emit (events.js:198:13)
at connect (/Users/bisite/Documents/Git/Trusted-Industry/TrustedIndustryFront/node_modules/mongodb/lib/core/connection/pool.js:580:14)
at makeConnection (/Users/bisite/Documents/Git/Trusted-Industry/TrustedIndustryFront/node_modules/mongodb/lib/core/connection/connect.js:39:11)
at callback (/Users/bisite/Documents/Git/Trusted-Industry/TrustedIndustryFront/node_modules/mongodb/lib/core/connection/connect.js:261:5)
at Socket.err (/Users/bisite/Documents/Git/Trusted-Industry/TrustedIndustryFront/node_modules/mongodb/lib/core/connection/connect.js:286:7)
at Object.onceWrapper (events.js:286:20)
at Socket.emit (events.js:198:13)
at emitErrorNT (internal/streams/destroy.js:91:8)
at emitErrorAndCloseNT (internal/streams/destroy.js:59:3)
at process._tickCallback (internal/process/next_tick.js:63:19)
name: 'MongoNetworkError',
errorLabels: [ 'TransientTransactionError' ],
[Symbol(mongoErrorContextSymbol)]: {} }
解决方案
如果您在单个 Docker 容器中运行它,则必须27017
像这样公开端口:
docker run --name some-mongo -d mongo -p 27017:27107
但将docker-compose
mongoDB 和应用程序作为容器化应用程序使用会是一种更安全的方法。这样您就不必在 docker 基础架构之外公开 mongo 端口。
推荐阅读
- sql - 在存储过程中的子句 IF 上选择更多值
- visual-studio - 什么是 TFS 的良好学习资源以及如何将 TFS 与 Visual Studio 一起使用?
- angular - Angular 组件:禁用点击事件
- javascript - 正则表达式仅包含二进制数且不超过 8 位
- jenkins-pipeline - 使用 JUnitFlakyTestDataPublisher 会引发 AbstractMethodError “您必须覆盖contributeTestData”
- session - 如何使用 SAP Connection 保持同一登录状态?
- java - 如何修复“ic_launcher_foreground.xml:1:错误:未找到元素。” 在 Android Studio 中
- cordova - 在 Ionic 3 移动应用程序中使用linkedin 登录
- php - Ajax Div 刷新太快
- c# - Dispose(true) 从未调用 Xamarin.Android 'Java.Object'