【问题标题】:Can´t connect to my mongoDB docker with nodeJS无法使用 nodeJS 连接到我的 mongoDB docker
【发布时间】:2019-09-20 19:54:29
【问题描述】:

我有一个本地运行的 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)]: {} }

【问题讨论】:

  • mongo是否在运行???
  • 它在 docker 容器中本地运行
  • 本地主机?还是本地主机?
  • 应该是localhost 而不是local-host

标签: javascript node.js mongodb docker mongoose


【解决方案1】:

如果您在单个 Docker 容器中运行它,您必须像这样公开端口 27017

docker run --name some-mongo -d mongo -p 27017:27107

但是将docker-compose 与 mongoDB 和应用程序一起用作容器化应用程序会是一种更安全的方法。 这样您就不必在 docker 基础架构之外公开 mongo 端口。

【讨论】:

    猜你喜欢
    • 2020-03-06
    • 2021-02-09
    • 2019-05-24
    • 1970-01-01
    • 2020-04-23
    • 1970-01-01
    • 1970-01-01
    • 2017-06-11
    • 2015-12-31
    相关资源
    最近更新 更多