Я пытаюсь настроить докер в своих проектах для изучения.
У меня есть проект 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
}
Спасибо ...