Docker化的mongodb认证"/>
Docker化的mongodb认证
我是 mongodb 和 docker 世界的新手,正在尝试弄清楚身份验证的工作原理。我不断收到
"UserNotFound: Could not find user \"myusername\" for db \"database\""
登录 docker 和身份验证失败错误。
这是我的docker-compose.yml:
mongo:
image: mongo
container_name: mongo
environment:
MONGO_INITDB_ROOT_USERNAME: ${MONGO_INITDB_ROOT_USERNAME}
MONGO_INITDB_ROOT_PASSWORD: ${MONGO_INITDB_ROOT_PASSWORD}
MONGO_INITDB_DATABASE: ${MONGO_INITDB_DATABASE}
env_file:
- .env
volumes:
- ./data/mongo:/data/db
- ./scripts/docker/mongo/mongo-init.js:/docker-entrypoint-initdb.d/mongo-init.js:ro
ports:
- '6000:27017'
mongo-init.js 文件:
db = db.getSiblingDB("admin");
db.auth(
process.env.MONGO_INITDB_ROOT_USERNAME,
process.env.MONGO_INITDB_ROOT_PASSWORD
);
db = db.getSiblingDB(process.env.MONGO_INITDB_DATABASE);
db.createUser({
user: process.env.MONGO_USER,
pwd: process.env.MONGO_PASSWORD,
roles: [
{
role: "readWrite",
db: process.env.MONGO_INITDB_DATABASE,
},
],
});
db.createCollection(process.env.MAIN_DB_COLLECTION);
这是我的连接功能:
import mongoose from "mongoose";
import config from "config";
const dbUrl = `mongodb://${config.get("dbUserName")}:${config.get(
"dbPass"
)}@localhost:6000/database?authSource=admin`;
const databaseConnection = async () => {
try {
await mongoose.connect(dbUrl);
console.log("Database connected...");
} catch (error: any) {
console.log(error.message);
setTimeout(databaseConnection, 5000);
}
};
export default databaseConnection;
不胜感激任何建议
回答如下:更多推荐
Docker化的mongodb认证
发布评论