Подключение к mongodb на докере не работает через mongoose - PullRequest
0 голосов
/ 02 апреля 2019

Я пытаюсь настроить сервер mongodb через докер и подключиться к нему через api express.js, используя mongoose. Однако api не подключается, а браузер подключается.

Я уже пытался изменить настройки, перезапустить докер, переустановить node_modules. Также я попробовал различные строки подключения:

mongodb://localhost:8081/db/movies
mongodb://localhost:8081/
mongodb://localhost:8081/movies

Мой docker-compose:

version: '3.1'

services:
  mongo:
    container_name: mongo
    image: mongo
    ports:
      - 8082:8082
    restart: always
    environment:
      MONGO_INITDB_ROOT_USERNAME: root
      MONGO_INITDB_ROOT_PASSWORD: example

  mongo-express:
    container_name: mongo-express
    image: mongo-express
    restart: always
    ports:
      - 8081:8081
    environment:
      ME_CONFIG_MONGODB_ADMINUSERNAME: root
      ME_CONFIG_MONGODB_ADMINPASSWORD: example

Фрагмент ядра, отвечающий за подключение к базе данных:

const express = require('express');
const app = express();
const bodyParser = require('body-parser');
const cors = require('cors');
const port = process.env.PORT || 3001;
const mongoose = require('mongoose');

mongoose.connect('mongodb://localhost:8081/db/movies', { useNewUrlParser: true }).then(() => {
    console.log("Connected to Database");
    }).catch((err) => {
        console.log("Not Connected to Database ERROR! ", err);
});

Лунная версия - 5.4.21.

Ожидается соединение с базой данных, но фактический результат:

Not Connected to Database ERROR!  { MongoNetworkError: connection 0 to localhost:8081 closed
    at Socket.<anonymous> (C:\Users\...\moviesapi\node_modules\mongodb-core\lib\connection\connection.js:276:9)
    at Object.onceWrapper (events.js:315:30)
    at emitOne (events.js:116:13)
    at Socket.emit (events.js:211:7)
    at TCP._handle.close [as _onclose] (net.js:567:12)
  name: 'MongoNetworkError',
  errorLabels: [ 'TransientTransactionError' ],
  [Symbol(mongoErrorContextSymbol)]: {} }

1 Ответ

0 голосов
/ 02 апреля 2019

У вас есть несколько ошибок, которые вызывают ошибку.Если вы снова прочитаете свой код, вы увидите первую проблему, к которой вы пытаетесь подключиться mongodb://localhost:8081, которая является панелью администрирования MongoDB.Итак, вам необходимо подключиться к mongodb://localhost:27017, который является портом по умолчанию MongoDB.

Кроме того, вы должны обновить свой docker-compose.yml, поскольку 8082 не является портом по умолчанию для MongoDB.

version: '3.1'

services:
  mongo:
    image: mongo
    ports:
      - 27017:27017
    restart: always
    environment:
      MONGO_INITDB_ROOT_USERNAME: root
      MONGO_INITDB_ROOT_PASSWORD: example

  mongo-express:
    image: mongo-express
    restart: always
    ports:
      - 8081:8081
    environment:
      ME_CONFIG_MONGODB_ADMINUSERNAME: root

Более подробную информацию о вашем стеке вы можете узнать, прочитав документацию, выполнив поиск в Интернете.

...