docker-compose deploy replicaSet in standalone MongoDB cluster and with auth

朱雀 2023-06-02 10:36 442阅读 0赞

经过两天的折腾,终于实现了自己想要的效果,就是通过docker-compose 部署最新的mongodb replicaSet, 主要是为了测试 4.2 最新的多文档事务,下面将整个步骤分享一下:

docker-compose.yml 内容如下:

  1. version: '3.4'
  2. services:
  3. mongo:
  4. container_name: mongodb
  5. image: mongo:latest
  6. hostname: mongodb
  7. volumes:
  8. - /data/mongodb/mongod.conf:/etc/mongod.conf
  9. - /data/mongodb/data/db/:/data/db/
  10. - /data/mongodb/data/log/:/var/log/mongodb/
  11. - /data/mongodb/initdb.d/:/docker-entrypoint-initdb.d/
  12. environment:
  13. - MONGO_INITDB_ROOT_USERNAME=root
  14. - MONGO_INITDB_ROOT_PASSWORD=123456
  15. ports:
  16. - "27017:27017"
  17. healthcheck:
  18. test: test $$(echo "rs.initiate().ok || rs.status().ok" | mongo -u root -p '123456' --quiet) -eq 1
  19. interval: 10s
  20. start_period: 30s
  21. command: ["--replSet", "rs0", "--bind_ip_all"]

  

说明:

1、 /data/mongodb/mongod.conf 文件需要提前建好,内容如下,主要是启用验证,如果不挂载这个文件,replicaset 是在裸奔的

  1. # mongod.conf
  2. # for documentation of all options, see:
  3. # http://docs.mongodb.org/manual/reference/configuration-options/
  4. # Where and how to store data.
  5. storage:
  6. dbPath: /data/db
  7. journal:
  8. enabled: true
  9. # engine:
  10. # mmapv1:
  11. # wiredTiger:
  12. # where to write logging data.
  13. systemLog:
  14. destination: file
  15. logAppend: true
  16. path: /var/log/mongodb/mongod.log
  17. # network interfaces
  18. net:
  19. port: 27017
  20. bindIp: 127.0.0.1
  21. # how the process runs
  22. processManagement:
  23. timeZoneInfo: /usr/share/zoneinfo
  24. security:
  25. authorization: enabled
  26. #operationProfiling:
  27. #replication:
  28. #sharding:
  29. ## Enterprise-Only Options:
  30. #auditLog:
  31. #snmp:

  

2、 /data/mongodb/initdb.d 此目录下的脚本是用来初始化的,前提是没有任何数据前执行,我在该目录下创建了create-app-user.sh 来初始化自定义数据库【yourdb】以及用户名【yourAdmin】密码【123456】,内容如下:

  1. #!/usr/bin/env bash
  2. echo "Creating mongo users..."
  3. mongo admin -u root -p 123456 << EOF
  4. db.createUser({user: 'admin', pwd: '123456', roles: [{role: 'userAdminAnyDatabase', db: 'admin'}]});
  5. db.grantRolesToUser(
  6. "admin",
  7. [ "clusterAdmin" ]
  8. );
  9. EOF
  10. mongo admin -u admin -p 123456 << EOF
  11. use yourdb
  12. db.createUser({user: 'yourdbAdmin', pwd: '123456', roles:[{role:'readWrite',db:'yourdb'}]})
  13. EOF
  14. echo "Mongo users created for yourdb."

3、可以用monog client 测试登录:

  1. mongo -u root -p 123456

 登录成功后,是这个样子滴:

946553-20190821183108941-868546601.png

执行 show dbs; 可以看到自己建了的数据库,测试自己建了的用户和密码,可以使用:

  1. mongo -u yourdbAdmin -p 123456 --authenticationDatabase yourdb

  

转载于:https://www.cnblogs.com/autohome7390/p/11390465.html

发表评论

表情:
评论列表 (有 0 条评论,442人围观)

还没有评论,来说两句吧...

相关阅读