Не могу подключиться к моему доку mongoDB с помощью nodeJS - PullRequest
0 голосов
/ 20 сентября 2019

У меня локально работает докер mongoDB, который называется "some-mongo".На том же компьютере у меня также работает мой внутренний сервер (Сделано с nodeJS).Проблема заключается в подключении моего сервера nodeJS к локальному докеру mongo с помощью модуля «mongoose».

Я запустил свой докер mongoDB, выполнив следующую команду:

docker run --name some-mongo -d mongo

И мой сервер nodeJSпытается подключиться к доку mongo следующим образом:

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)]: {} }

1 Ответ

0 голосов
/ 20 сентября 2019

Если вы запустите его в одном Docker-контейнере, вам придется выставить порт 27017 следующим образом:

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

Но было бы намного безопаснее использовать docker-compose с обоими, mongoDB и приложение, как контейнерные приложения.Таким образом, вам не нужно выставлять порт Монго за пределами вашей док-инфраструктуры.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...