我正在尝试创建本地开发环境NodeJS(node:latest)& docker上的MongoDB(mongo:latest)和我使用mongoose连接MongoDB。我想设置非常简单的环境。
我的docker-compose.yml
version: '3'
services:
server:
build: .
container_name: cms_webserver
ports:
- "4000:4000"
volumes:
- ./api:/app/api
- ./node_modules:/app/node_modules
links:
- mongo
mongo:
container_name: cms_mongo
image: mongo
environment:
- MONGO_INITDB_ROOT_USERNAME=root
- MONGO_INITDB_ROOT_PASSWORD=root
- MONGO_INITDB_DATABASE=cms
ports:
- "27017:27017"
volumes:
- ./docker/mongod.conf:/etc/mongod.conf
- ./data:/data/db
adminmongo:
image: mrvautin/adminmongo
ports:
- "1234:1234"
mongod.conf
systemLog:
destination: file
logAppend: true
path: /var/log/mongodb/mongod.log
storage:
dbPath: /var/lib/mongo
journal:
enabled: true
processManagement:
fork: true # fork and run in background
pidFilePath: /var/run/mongodb/mongod.pid # location of pidfile
timeZoneInfo: /usr/share/zoneinfo
security:
authorization: disabled
net:
port: 27017
bindIp: 127.0.0.1 # Enter 0.0.0.0,:: to bind to all IPv4 and IPv6 addresses or, alternatively, use the net.bindIpAll setting.
当我重建docker时,我删除了data /的内容。每次我看到像新用户一样成功添加:
Successfully added user: {
"user" : "root",
"roles" : [
{
"role" : "root",
"db" : "admin"
}
]
}
当我尝试连接到节点中的mongoDB时,使用
mongoose.connect('mongodb://mongo')
获取有关成功的信息。
当我尝试连接到mongoDB到默认DB:cms
时mongoose.connect('mongodb://root:root@mongo/cms')
我收到错误:
来自客户端的cms上的root用户的SCRAM-SHA-1身份验证失败 172.18.0.4:59142; UserNotFound:找不到用户root @cms
我的第一个问题是如何禁用安全性?我找到并设置security: authorization: disabled
的选项,即使我已经完成了这个问题仍然存在。
第二个问题是主题。
docker ps
并检查哪个容器属于mongo,然后使用docker exec -it XXX bash
登录。我使用简单的命令mongo
,我可以登录到mongo。我能做的是用命令打开mongo mongo -u root -proot admin
但我无法使用mongo -u root -p admin
(mongo没有问我密码)
作为管理员(root / root)我可以通过运行命令use cms
创建新数据库,我也可以添加记录并检查数据库是否存在
我可以创建新用户让我们说:
db.createUser({user:"test",pwd:"test",roles:[{role:"dbOwner",db:"cms"}]});
我退出并再次尝试登录数据库cms
我创建并收到错误:
MongoDB shell版本v3.6.3 连接到:mongodb://127.0.0.1:27017 / cms MongoDB服务器版本:3.6.3 2018-04-03T12:13:41.428 + 0000 E QUERY [thread1]错误:验证>失败。 : DB.prototype._authOrThrow@src/mongo/shell/db.js:1608:20 @(AUTH):6:1 @(AUTH):1:2 异常:登录失败
有没有人知道发生了什么,可以解释我做错了什么,甚至让我准备好使用示例如何在我的本地设置mongo DB?我在DevOps中不是很强大而且我完全迷失了。