[英]MongoError: Authentication failed for node.js app using Docker containers
我创建了一个使用 MongoDB 作为数据库的节点应用程序。 我为它们创建了容器并创建了一个 docker-compose 文件。 但是在将 MongoDB 与我的节点应用程序连接时,出现身份验证失败错误。 我想使用 docker-compose 将我的节点容器与 MongoDB 容器连接起来。 我已设置所有凭据,但出现身份验证失败错误。
错误:
api | MongoError: Authentication failed.
api | at MessageStream.messageHandler (/home/app/node_modules/mongodb/lib/cmap/connection.js:272:20)
api | at MessageStream.emit (events.js:375:28)
api | at processIncomingData (/home/app/node_modules/mongodb/lib/cmap/message_stream.js:144:12)
api | at MessageStream._write (/home/app/node_modules/mongodb/lib/cmap/message_stream.js:42:5)
api | at writeOrBuffer (internal/streams/writable.js:358:12)
api | at MessageStream.Writable.write (internal/streams/writable.js:303:10)
api | at Socket.ondata (internal/streams/readable.js:726:22)
api | at Socket.emit (events.js:375:28)
api | at addChunk (internal/streams/readable.js:290:12)
api | at readableAddChunk (internal/streams/readable.js:265:9)
api | at Socket.Readable.push (internal/streams/readable.js:204:10)
api | at TCP.onStreamRead (internal/stream_base_commons.js:188:23) {
api | ok: 0,
api | code: 18,
api | codeName: 'AuthenticationFailed'
api | }
docker-compose.yml
version: "3.9"
services:
api:
restart: always
build:
context: ./server
dockerfile: Dockerfile.dev
container_name: api
volumes:
- /home/app/node_modules
- ./server:/home/app
ports:
- 8000:5000
depends_on:
- mongodb
environment:
NODE_ENV: ${NODE_ENV}
MONGO_URI: mongodb://${MONGO_ROOT_USERNAME}:${MONGO_ROOT_PASSWORD}@mongodb
networks:
- lib_api
mongodb:
image: mongo
restart: always
ports:
- 27017:27017
environment:
MONGO_INTIDB_ROOT_USERNAME: ${MONGO_ROOT_USERNAME}
MONGO_INTIDB_ROOT_PASSWORD: ${MONGO_ROOT_PASSWORD}
volumes:
- mongodb-data:/data/db
networks:
- lib_api
networks:
lib_api:
driver: bridge
volumes:
mongodb-data:
driver: local
.env
NODE_ENV=developement
MONGO_ROOT_USERNAME=niranjan
MONGO_ROOT_PASSWORD=password
DB_NAME=library
数据库配置文件
const mongoose = require("mongoose");
mongoose
.connect(process.env.MONGO_URI, {
dbName: process.env.DB_NAME,
useCreateIndex: true,
useNewUrlParser: true,
useUnifiedTopology: true,
useFindAndModify: false,
})
.then(() => console.log("database connected"))
.catch((err) => console.log(err));
试试这个 mongodb uri:
MONGODB_URI='mongodb://root:1004@<your_mongo_service_name>/<your_db_Name>?authSource=admin&w=1'
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.