Docker/Rancher部署MongoDb 7.x版本,单副本集群模式,只为支持事务。多节点集群不建议使用副本模式部署,请用分片模式部署集群。该教程理论支持5.x以上版本。全网最全最详细教程,无坑

准备密钥文件

# 创建密钥文件存储目录
mkdir -p /data/mongo/config
# 生成密钥
openssl rand -base64 756 > /data/mongo/config/mongo.key
# 设置密钥文件权限和用户组(一定要设置)
chmod 400 /data/mongo/config/mongo.key
sudo chown 999:999 /data/mongo/config/mongo.key

Docker部署命令

docker run -d --restart=always -p 30017:27017 -e MONGO_INITDB_ROOT_USERNAME=root -e MONGO_INITDB_ROOT_PASSWORD=passwd -e TZ=Asia/Shanghai -v /data/mongo/db:/data/db -v /data/mongo/config:/data/config mongo:7.0.4 mongod --port 27017 --replSet mongo --dbpath /data/db --auth --keyFile /data/config/mongo.key
  • MONGO_INITDB_ROOT_USERNAME 账号

  • MONGO_INITDB_ROOT_PASSWORD 密码

  • -v /data/mongo/db:/data/db -v /data/mongo/config:/data/config 挂载数据和配置文件

  • mongo:7.0.4 指定使用7.0.4版本,可以直接用mongo:7 版本(默认最新版),也可以改成5或6版本

  • mongod --port 27017 --replSet mongo --dbpath /data/db --auth --keyFile /data/config/mongo.key 设置容器端口27017,集群名称mongo ,数据目录--dbpath /data/db ,开启账号/权限验证--auth ,密钥文件--keyFile /data/config/mongo.key

集群初始化

进入容器控制台后输入以下命令

# 连接集群
mongosh admin
# 登录账号密码,部署时环境变量配置的账号密码
db.auth('root','passwd')
# 集群初始化,如果是公网,一定要公网ip。如{_id:0,host:'123.123.123.123:30017'}
rs.initiate({ 
    _id:"mongo",
    members:[  
        {_id:0,host:'公网ip:映射端口'}
    ]
})
# 查看配置
rs.conf()

# 创建一个测试库,并插入一条数据
# 切换到库
use test
# 插入一条数据
db.test.insert({"name":"test"})

使用客户端连接MongoDB验证

  • 我这里使用Navicat 客户端连接,类型选择副本集群模式,验证数据库是admin

  • 可以看到刚刚插入的数据

Rancher部署

和docker一样,填写完配置,启动成功后,进命令行初始化集群