mongo docker image和mongoose作为Object Document mapper在创建容器后连接到特定db的问题:
(我确保DB_NAME没有未定义...)
await mongoose.connect(`${process.env.MONGO_URI}/${process.env.DB_NAME}`, {
字符串
Idk为什么,但是每当我尝试在docker容器中连接mongodb(构建了docker-compose)时,我都会得到这个错误:
error: Failed to establish MongoDB connection: MongoServerError: Authentication failed..
型
但是,当我尝试连接MongoDB Atlas时,没有数据库名称,只有URI,我可以轻松连接...
我的Docker-compose文件:
version: "3"
services:
server:
build:
context: ./server
dockerfile: ./Dockerfile
ports:
- 3001:3001
volumes:
- ./server/dist:/home/nodeUser/app/dist
depends_on:
- mongodb
mongodb:
image: mongo
restart: always
environment:
MONGO_INITDB_ROOT_USERNAME: root
MONGO_INITDB_ROOT_PASSWORD: toor
MONGO_INITDB_DATABASE: auth
ports:
- 27017:27017
型
MY .env文件:
PORT=3001
MONGO_URI=mongodb://root:toor@mongodb:27017/auth
DB_NAME=auth
型
奇怪的是,当我省略凭证,所以不需要身份验证连接,那么它的工作...
我试着省略了凭证-- login without auth required:我尝试使用相同的连接URI进行连接,但没有数据库名称:我检查了db_name是否可以在进程中未定义。env。DB_NAME:负的
1条答案
按热度按时间fnvucqvd1#
我也遇到过类似的问题。因为所使用的用户是root用户,并且它没有链接到特定的数据库。在这种情况下,您必须添加一个选项
authSource=admin
。(https://www.mongodb.com/docs/manual/reference/connection-string/#mongodb-urioption-urioption.authSource)字符串