当前位置: 首页 > article >正文

杂记 | 使用Docker安装并配置MongoDB以支持事务(单副本,并解决了证书文件错误的问题)

文章目录

  • 00 安装前的准备
  • 01 创建Docker Compose文件
  • 02 设置证书文件
  • 03 启动MongoDB
  • 04 初始化副本集和创建用户
  • 05 验证安装


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

命令解释:

  1. command: --auth --bind_ip_all --replSet rs0 --keyFile /data/mongodb/keyFile: 这是传递给MongoDB服务器的命令行参数。

    • --auth: 开启身份验证。
    • --bind_ip_all: 允许MongoDB绑定到服务器上的所有IP地址。
    • --replSet rs0: 初始化一个名为rs0的副本集。
    • --keyFile /data/mongodb/keyFile: 指定用于副本集成员之间身份验证的密钥文件路径。
  2. ports:: 这部分定义了容器和宿主机之间的端口映射。

    • "27017:27017": 将容器的27017端口映射到宿主机的27017端口。MongoDB默认使用27017端口。
  3. 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

使用以下命令来启动MongoDB服务:

# 拉取镜像
docker-compose pull
# 启动容器
docker-compose up -d
# 停止容器
# docker-compose down

启动完成后,该目录:
在这里插入图片描述

04 初始化副本集和创建用户

进入到MongoDB容器并初始化副本集:

# 进入容器 这里的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。开启了单副本,支持事务。


http://www.kler.cn/news/148856.html

相关文章:

  • centos7.9 + gitlab12.3.0安装
  • PyQt6 QLineEdit单行文本框控件
  • 使用python提取出身份证的出生日期(18位和15位)
  • C# freesql技术 常用的增删改查sql命令
  • linux安装终端连接工具Tabby
  • DjiTello + YoloV5的无人机的抽烟检测
  • 创建Dataloader基础篇【一】
  • 拆解按摩器:有意思的按键与LED控制电路,学习借鉴一下!
  • <Linux>(极简关键、省时省力)《Linux操作系统原理分析之Linux 进程管理 9》(13)
  • IELTS学习笔记_grammar_新东方
  • 基于MBC调制方法的准Z源三相逆变器Simulink建模与仿真
  • 目标检测YOLO系列从入门到精通技术详解100篇-【目标检测】特征点检测与匹配
  • MySQL慢查询
  • Flink Flink中的合流
  • Python---lambda表达式
  • 交换机的VRRP主备配置例子
  • 计网Lesson3 - 计算机网络评价指标与封包解包
  • 别再让假的fiddler教程毒害你了,来看这套最全最新的fiddler全工具讲解
  • 基于C#实现Kruskal算法
  • DGL在异构图上的GraphConv模块
  • 【Redisson】基于自定义注解的Redisson分布式锁实现
  • 堆的应用(堆排序、Top-K问题)
  • 大模型的开源闭源
  • linux -系统通用命令查询
  • viple模拟器使用(四):unity模拟器中实现沿右墙迷宫算法
  • 门面模式-C++实现
  • java中IO知识点概念
  • GoLong的学习之路,进阶,RabbitMQ (消息队列)
  • Jmeter-分布式压测(远程启动服务器,windows)
  • 代码随想录-刷题第九天