MongoError:使用Docker容器对node.js应用程序进行身份验证失败



我使用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

dbconfig.js

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'

相关内容

最新更新