【发布时间】:2020-09-24 01:03:52
【问题描述】:
我正在使用 docker、mongodb 和 nodejs (mongoose) 设置应用程序,但由于某种原因,我遇到了身份验证错误。
UserNotFound: 找不到用户 "testuserdb" 用于 db "admin"
有什么建议吗?
谢谢!
.env
MONGO_USERNAME=testuserdb
MONGO_PASSWORD=testuserpass
MONGO_PORT=27017
MONGO_DB=testdb
db.js(猫鼬连接)
const mongoose = require('mongoose');
const {
MONGO_USERNAME,
MONGO_PASSWORD,
MONGO_HOSTNAME,
MONGO_PORT,
MONGO_DB
} = process.env;
const options = {
useNewUrlParser: true,
reconnectTries: Number.MAX_VALUE,
reconnectInterval: 500,
connectTimeoutMS: 10000,
};
const url = `mongodb://${MONGO_USERNAME}:${MONGO_PASSWORD}@${MONGO_HOSTNAME}:${MONGO_PORT}/${MONGO_DB}?authSource=admin`;
mongoose.connect(url, options).then( function() {
console.log('MongoDB is connected');
})
.catch( function(err) {
console.log(err);
});
码头工人撰写 我使用 docker 环境变量到 mongodb 和 nodejs 来定义用户名、密码、主机名 db 和数据库名
version: '3'
services:
nodejs:
build:
context: .
dockerfile: Dockerfile.dev
depends_on:
- db
image: nodejs
container_name: nodejs
restart: unless-stopped
env_file:
- .env
environment:
- MONGO_USERNAME=$MONGO_USERNAME
- MONGO_PASSWORD=$MONGO_PASSWORD
- MONGO_HOSTNAME=db
- MONGO_PORT=$MONGO_PORT
- MONGO_DB=$MONGO_DB
ports:
- "3000:3000"
volumes:
- .:/home/node/app
- node_modules:/home/node/app/node_modules
networks:
- app-network
#command: ./wait-for.sh db:27017 -- /home/node/app/node_modules/.bin/nodemon app.js
command: /home/node/app/node_modules/.bin/nodemon app.js
db:
image: mongo:4.2.9-bionic
container_name: db
restart: unless-stopped
env_file:
- .env
environment:
- MONGO_INITDB_ROOT_USERNAME=$MONGO_USERNAME
- MONGO_INITDB_ROOT_PASSWORD=$MONGO_PASSWORD
- MONGO_INITDB_DATABASE=$MONGO_DB
volumes:
- dbdata:/data/db
networks:
- app-network
networks:
app-network:
driver: bridge
volumes:
dbdata:
node_modules:
【问题讨论】:
标签: node.js mongodb docker docker-compose