docker 中配置mongodb并对外暴露链接端口设置账户认证,防止脱裤

来源:互联网 发布:苹果cms免费模板 编辑:程序博客网 时间:2024/04/30 02:30

准备工作:

首先在data/db目录下面新建一个文件,具体操作如下:

  1. openssl rand -base64 741 > mongodb-keyfile
  2. chmod 600 mongodb-keyfile
  3. sudo chown 999 mongodb-keyfile
  4. 上面这个操作是为每个节点创建密钥文件,以方便数据库集群,如果你没有那就把下面的
  5. - /data/mongodb-keyfile:/opt/keyfile
  6. 去掉,以免报错

1.docker-meteorblog.yml

  1. mongometeor:
  2.   container_name: mongometeor
  3.   hostname: mongometeor
  4.   restart: always
  5.   image: mongo
  6.   ports:
  7.     - 2777:27017
  8.   volumes:
  9.     - /data/db:/data/db
  10.     - /data/mongodb-keyfile:/opt/keyfile
  11.   command: --smallfiles --rest --auth
  12. meteorblog:
  13.  container_name: meteorblog
  14.  restart: always
  15.  image: meteorhacks/meteord:base
  16.  environment:
  17.    - MONGO_URL=mongodb://meteorblog:secret@mongometeor:27017/mongometeorblog
  18.    - ROOT_URL=http://localhost:80
  19.  links:
  20.    - mongometeor
  21.  ports:
  22.    - 8080:80
  23.  volumes:
  24.    - /root/docker/meteorblog:/bundle

2.执行命令即可: 

  1. docker-compose -f docker-meteorblog.yml up

3.进入mongometeor容器,执行命令

  1. docker exec -it mongometeor /bin/bash

4.设置mongometeor用户

  1. 执行命令:
  2. mongo
  3. use admin
  4. #创建用户gyj
  5. db.createUser({user: "gyj",pwd: "secret",roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]})
  6. #验证是否创建成功
  7. db.auth("gyj","secret")

5.使用管理员账户登陆,就是上面你创建的gyj用户了

  1. mongo admin -u gyj -p secret

6.这一步是最重要的,就是给特定的数据库设定用户

  1. db.createUser(
  2. {
  3.   user: "meteorblog",
  4.   pwd: "secret",
  5.   roles: [
  6.      { role: "readWrite", db: "mongometeorblog" }
  7.   ]
  8. }
  9. )

#这里的db就是你的数据库名字

role就是你的权限,你可以随便设置

0 0