我正在学习 docker,所以我正在关注其中一个视频,它展示了如何在 docker 容器中运行时将您的 js 应用程序与 mongoDB 连接起来。现在我所做的小变化是它显示在系统端口 27017 上连接 mongo,这是默认的 mongo 端口,但问题是我不想连接到我的系统安装的 mongo 而是连接到容器 mongo ,所以为此我决定在端口 3535 上运行 mongo 容器。当我这样做时,mongo-express 成功连接到 mongo,但是当我尝试将它与我的 js 应用程序(使用 mongoose)连接时,它不断显示身份验证错误,我检查了密码是否正确,没有括号问题是他们的,我用来打开我的 docker 容器的命令是
docker run -d -p 3535:27017 --name mongoDB --network databases -e MONGO_INITDB_ROOT_USERNAME=admin -e MONGO_INITDB_ROOT_PASSWORD=admin mongo
另一个 mongo-express 是
docker run -d -p 8081:8081 --name mongoExp --network databases -e ME_CONFIG_BASICAUTH_USERNAME=admin -e ME_CONFIG_BASICAUTH_PASSWORD=admin -e ME_CONFIG_MONGODB_SERVER=mongoDB -e ME_CONFIG_MONGODB_AUTH_USERNAME=admin -e ME_CONFIG_MONGODB_AUTH_PASSWORD=admin mongo-express
我的节点应用程序代码看起来像
const mongoose = require('mongoose');
const {Humans}= require("./models/humans.js")
mongoose.connect('mongodb://admin:admin@localhost:3535/user', {useNewUrlParser: true, useUnifiedTopology: true }).then(()=>{
console.log("connected to db");
})
let data={
name:"Vaibhav Jain",
mob:"9801",
skills:"coding"
}
const express = require('express')
const app = express();
app.set('view engine', 'ejs');
app.get("/",async(req,res)=>{
// console.log(Humans);
// await Humans.insertMany( );
// await Humans.insertMany({name:"Mobius" , mob:"5908922",skills:"drawing"});
const result = await Humans.find();
res.send(result);
})
app.get("/home",(req,res)=>{
res.render("home", data);
})
app.listen(3000,()=>{
console.log("listening port");
})