我正在尝试在docker(mongo:latest)上创建本地开发环境NodeJS(节点:最新)和MongoDB,并使用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我删除数据/的内容 . 每次我看到像新用户一样成功添加:

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')

我收到一个错误:

来自客户端172.18.0.4:59142的cms上的root的SCRAM-SHA-1身份验证失败; 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中不是很强大而且我完全迷失了 .