Не удается установить соединение с Docker, используя mongodb и express - PullRequest
0 голосов
/ 03 ноября 2019

Я пытаюсь настроить докер в своих проектах для изучения.

У меня есть проект nodejs, в котором используются пакеты Express + mongodb.

Докер настроен, что реклама работает нормально, но когдаМне нужно создать соединение, оно возвращает неопределенное. Это не проблема с кодом проекта, потому что когда я запускаю сервер и службу базы данных без докера, он работает хорошо.

Dockerfile:

FROM node:8

RUN mkdir -p /usr/src/got/

WORKDIR /usr/src/got/

COPY package*.json /usr/src/got/

RUN npm i

COPY . /usr/src/app

RUN npm i -g --save-dev nodemon

EXPOSE 8080

CMD [ "node", "app.js" ]

docker-compose.yaml:

version: '3.7'

services:
  app:
    build: .
    image: got:latest
    command: nodemon app.js
    volumes:
      - .:/usr/src/got/
    ports: 
      - "8080:8080"
    depends_on:
      - mongo
    links:
      - mongo

  mongo:
    image: mongo
    ports: 
      - "27017:27017"
    volumes:
      - data-volume:/data/db

volumes:
  data-volume:

ошибка:

Ошибка типа: невозможно прочитать свойство 'collection' из неопределенного app_1 |
в /usr/src/got/app/models/usuariosDAO.js:8: 12 app_1 |в /usr/src/got/node_modules/mongodb/lib/db.js:229:14

код, в котором выдается ошибка: userDAO.js:

UserDAO.prototype.inserirUsuario = function (usuarioDTO) {
  this._conn.open(function(error, client) {

    client.collection('usuarios', function (error, collection) {
      collection.insert(usuarioDTO)
    })

  })
}

конфигурация соединения:

const mongoDbConnection =  function () {

  console.log('Connected to mongo database')

  const db = new mongo.Db(
    'got',
    new mongo.Server(
      '127.0.0.1',
      27017,
      {}
    ),
    {}
  )

  return db
}

Спасибо ...

1 Ответ

1 голос
/ 03 ноября 2019

Вы должны использовать mongo в качестве хоста вместо 127.0.0.1. По умолчанию контейнеры из compose подключены к общей сети, и имя службы из compose может быть преобразовано DNS в IP-адрес контейнера:

const db = new mongo.Db(
    'got',
    new mongo.Server(
      'mongo',
      27017,
      {}
    ),
    {}
  )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...