00 安装前的准备
在开始之前,确保已经安装了Docker,本文基于Docker Compose进行示范,没有装Docker Compose也可将其中的docker–compose命令转换为docker run命令执行。
01 创建Docker Compose文件
首先,新建一个名为mongo
的目录,并在其中创建一个名为docker-compose.yml
的文件,并写入以下内容:
version: '3.8'
services:
mongo:
image: mongo:latest
container_name: mongo
command: --auth --bind_ip_all --replSet rs0 --keyFile /data/mongodb/keyFile
ports:
- "27017:27017"
volumes:
- ./data:/data/db
- ./conf:/data/configdb
- ./backup:/data/backup
- ./keyFile:/data/mongodb/keyFile
这个配置会启动一个MongoDB容器,使用最新的MongoDB镜像,并将容器命名为mongo
。
命令解释:
-
command: --auth --bind_ip_all --replSet rs0 --keyFile /data/mongodb/keyFile
: 这是传递给MongoDB服务器的命令行参数。 -
volumes:
: 这部分定义了宿主机和容器之间的数据卷映射,用于数据持久化和配置管理。./data:/data/db
: 将宿主机当前目录下的data
文件夹映射到容器的/data/db
路径,用于存储MongoDB的数据文件。./conf:/data/configdb
: 将宿主机的conf
文件夹映射到容器的/data/configdb
路径,通常用于存放MongoDB的配置文件。./backup:/data/backup
: 将宿主机的backup
文件夹映射到容器的/data/backup
路径,用于存储备份文件。./keyFile:/data/mongodb/keyFile
: 将宿主机的keyFile
文件映射到容器的/data/mongodb/keyFile
路径,这是副本集认证所需的密钥文件。
02 设置证书文件
为了安全性和配置副本集,需要创建一个证书文件。在存放docker–compose.yml的mongo目录下,运行以下命令来生成证书文件:
# 生成一个756字节的自签名证书
openssl rand -base64 756 > ./keyFile
# 赋予该证书400权限
chmod 400 ./keyFile
# 更改文件的所有者和群组
chown 999:999 ./keyFile
MongoDB是以用户ID 999运行的,更改keyFile的所有者和群组为UID和GID 999,以确保MongoDB进程能够访问该文件。
必需要完成权限设置和访问组设置,否则MongoDB无法正常启动。
03 启动MongoDB
# 拉取镜像
docker-compose pull
# 启动容器
docker-compose up -d
# 停止容器
# docker-compose down
启动完成后,该目录:
04 初始化副本集和创建用户
# 进入容器 这里的mongo是容器名称 mongosh是脚本命令
docker exec -it mongo mongosh
# 进入容器后 执行初始化(带 > 符号说明是在容器内操作,并非命令的一部分)
> rs.initiate()
# 切换数据库
> use admin
# 创建管理员用户
> db.createUser({user:'admin', pwd:'admin123456', roles:[{role: 'userAdminAnyDatabase', db:'admin'}]});
# 用户认证登录
> db.auth("admin", "admin123456")
接下来,切换到printing账户,并创建一个具有读写权限的用户:
# 切换数据库
> use printing
# 创建一个用户
> db.createUser({user: "lily", pwd: "lily1997", roles: [{role:"readWrite", db: "printing"}]});
# 先退出
> exit
05 验证安装
# 进入容器
docker exec -it mongo mongosh
# 切换数据库
> use printing
# 用户认证登录
> db.auth("lily", "lily1997")
通过以上步骤,我们成功在Linux服务器上使用Docker安装并配置了MongoDB。开启了单副本,支持事务。
原文地址:https://blog.csdn.net/xuzhongyi103/article/details/134558377
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_3239.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!