杂记 | 使用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:latestcontainer_name: mongocommand: --auth --bind_ip_all --replSet rs0 --keyFile /data/mongodb/keyFileports:- "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服务器的命令行参数。--auth: 开启身份验证。--bind_ip_all: 允许MongoDB绑定到服务器上的所有IP地址。--replSet rs0: 初始化一个名为rs0的副本集。--keyFile /data/mongodb/keyFile: 指定用于副本集成员之间身份验证的密钥文件路径。
-
ports:: 这部分定义了容器和宿主机之间的端口映射。"27017:27017": 将容器的27017端口映射到宿主机的27017端口。MongoDB默认使用27017端口。
-
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。开启了单副本,支持事务。
相关文章:
杂记 | 使用Docker安装并配置MongoDB以支持事务(单副本,并解决了证书文件错误的问题)
文章目录 00 安装前的准备01 创建Docker Compose文件02 设置证书文件03 启动MongoDB04 初始化副本集和创建用户05 验证安装 00 安装前的准备 在开始之前,确保已经安装了Docker,本文基于Docker Compose进行示范,没有装Docker Compose也可将其…...
css三角,鼠标样式,溢出文字
目录 css三角 鼠标样式 例子:页码模块 溢出文字表示方式 margin负值运用 css三角强化 css三角 css三角中:line-height:0和font-size:0是防止兼容性的问题 jd {position: relative;width: 120px;height: 249px;background-…...
远程桌面访问MATLAB 2018B,提示License Manger Error -103,终极解决方案
通过远程桌面方位Windows Server系统下的MATLAB2018B,报错License Manger Error -103,Crack文件夹下的dll文件已经替换,同时也已经输出了lic文件,但是仍然无法打开。但是在本地桌面安装就没有问题。初步怀疑MATLAB的License使用机…...
Jmeter基础和概念
JMeter 介绍: 一个非常优秀的开源的性能测试工具。 优点:你用着用着就会发现它的重多优点,当然不足点也会呈现出来。 从性能工具的原理划分: Jmeter工具和其他性能工具在原理上完全一致,工具包含4个部分: …...
【Linux 带宽限速】trickle,限制docker 上传速度
限制docker 上传速度 然而,你可以使用第三方工具来实现这个目的。一个常用的工具是 trickle,它可以模拟网络带宽。 首先,你需要安装 trickle。在 Ubuntu 上,可以使用以下命令安装: sudo apt-get install trickle然后…...
MindStudio学习记录三:推理应用开发 acl mindx sdk
1.推理应用流程 1.1.创建工程 1.2.模型转换 1.3代码开发 1.3.1ACL代码 1.3.2MindX SDK开发 可视化模块化设计 中间的图片与处理 是基于AIPP的可视化处理 1.5.编译 交叉编译 1.6.运行与调试 1.7 调优工具 profiling性能分析 2.开发举例 resnet-50 2.1 准备工程 2.2.准备模型…...
【RT-DETR改进】SIoU、GIoU、CIoU、DIoU、AlphaIoU等二十余种损失函数
一、本文介绍 这篇文章介绍了RT-DETR的重大改进,特别是在损失函数方面的创新。它不仅包括了多种IoU损失函数的改进和变体,如SIoU、WIoU、GIoU、DIoU、EIOU、CIoU,还融合了“Alpha”思想,创造了一系列新的损失函数。这些组合形式的…...
【Linux】EVIOCGBIT
EVIOCGBIT(ev, len) 该怎么理解? 我们可以推断出,它是一个宏,它的前两个参数已经确定了,具体的功能由后两个参数(ev,len)来决定。Linux-4.9.88\include\uapi\linux\input.h #define EVIOCGBIT(ev,len) _IOC(_IOC_READ, E, 0x20 …...
鸿蒙4.0开发笔记之ArkTS装饰器语法基础@Extend扩展组件样式与stateStyles多态样式(十一)
一、Extend扩展组件样式 1、作用 前文提到可以使用Styles用于样式的扩展,在Styles的基础上,ArkTS语法还提供了Extend,⽤于扩展原生组件样式,包括Text、Button等等。 2、定义语法 Extend(UIComponentName) function functionNam…...
5V摄像机镜头驱动IC GC6208,可用于摄像机,机器人等产品中可替代AN41908
GC6208是一个镜头电机驱动IC摄像机和安全摄像机。该设备集成了一个直流电机驱动器的Iris的PID控制系统,也有两个通道的STM电机驱动器的变焦和对焦控制。 芯片的特点: 内置用于Iris控制器的直流电机驱动器 内置2个STM驱动程序,用于缩放和…...
PHP echo和print 语句
PHP 是通过 print 和 echo 语句来动态输出 HTML 内容,虽然 print 和 echo 语句两者的功能几乎是完全一样,但是还是有一点差别的。 在 PHP 中有两个基本的输出方式: echo 和 print。 本章节中我们会详细讨论两个语句的用法,并在实…...
ThinkPHP6.1 多应用模式的一些事儿
TP安装就不说了,直接从安装完成开始了。 安装多应用模式扩展 think-multi-app composer require topthink/think-multi-app删除 app 目录下的 controller 文件夹(TP 是根据是否有这个文件夹来判断单应用模式还是多应用模式的)。 创建应用 …...
redis-cluster集群模式
Redis-cluster集群 1 Redis3.0引入的分布式存储方案 2集群由多个node节点组成,redis数据分布在节点之中,在集群之中分为主节点和从节点3集群模式当中,主从一一对应,数据写入和读取与主从模式一样,主负责写,从只能读4集群模式自带哨兵模式,可…...
带你用uniapp从零开发一个仿小米商场_10. 首页开发
图标菜单栏开发 轮播图开发完成后,就是图标菜单栏了 可以看出这些图标都是一样的样式,所以可以勇哥flex布局让他们每个占百分之20 代码如下,既然都是一样的那就直接用个循环嵌套一下 data数据如下 同样,为了能让这段代码能在别的地方也用到,我直接把它封装成组件 <templ…...
常使用的定时任务
常使用的定时任务 一、 linux自带的定时任务 1、crontab 有这样一个需求:我们使用Java写一个工具jar包在系统空闲的时候去采集已经部署在Linux系统上的项目的一 些数据,可以使用 linux 系统的 crontab。 运行crontab -e,可以编辑定时器&…...
【人工智能Ⅰ】实验2:遗传算法
实验2 遗传算法实验 一、实验目的 熟悉和掌握遗传算法的原理、流程和编码策略,理解求解TSP问题的流程并测试主要参数对结果的影响,掌握遗传算法的基本实现方法。 二、实验原理 旅行商问题,即TSP问题(Traveling Salesman Proble…...
Hadoop集群升级(3.1.3 -> 3.2.4)
升级前确认 旧版本:3.1.3 升级版本:3.2.4 旧版本安装路径:/ddhome/bin/hadoop/ 新版本安装路径:/ddhome/bin/hadoop-3.2.4 安装新版本hadoop 解压安装 # 解压安装包到相应目录下 tar -zxvf /ddhome/tools/hadoop-3.2.4.tar.gz…...
(一)基于高尔夫优化算法GOA求解无人机三维路径规划研究(MATLAB)
一、无人机模型简介: 单个无人机三维路径规划问题及其建模_IT猿手的博客-CSDN博客 参考文献: [1]胡观凯,钟建华,李永正,黎万洪.基于IPSO-GA算法的无人机三维路径规划[J].现代电子技术,2023,46(07):115-120 二、高尔夫优化算法GOA简介 高尔夫优化算法…...
ESP32-Web-Server编程-建立第一个网页
ESP32-Web-Server编程-建立第一个网页 HTTP 简述 可能你每天都要刷几个短视频,打开几个网页来娱乐一番。当你打开一个网络上的视频或者图片时,其实际发生了下面的流程: 其中客户端就是你的浏览器啦,服务器就是远程一个存放视频或…...
csgo/steam游戏搬砖项目的五大认知误区
CSGO/steam游戏搬砖项目的5大认知误区 1、卡价越高越难选品?越没利润? 2、明明buff卖价《 steam求购价,为什么还能赚钱? 3、实名资料少就没法批量操作账号? 4、本金少就没法玩? 5、这个项目的风险是不是很大…...
3步掌握MTKClient:从零基础到设备调试的完整指南
3步掌握MTKClient:从零基础到设备调试的完整指南 【免费下载链接】mtkclient MTK reverse engineering and flash tool 项目地址: https://gitcode.com/gh_mirrors/mt/mtkclient MTKClient是一款功能强大的联发科芯片调试工具,能够帮助开发者进行…...
低功耗设计必看:PrimeTime生成.lib文件时PG引脚的正确配置方法(附实例代码)
低功耗设计必看:PrimeTime生成.lib文件时PG引脚的正确配置方法(附实例代码) 在当今数字IC设计中,低功耗已成为与性能、面积同等重要的关键指标。电源管理架构的复杂性使得时序库中的电源地(PG)引脚信息变得…...
seo高级优化如何利用社交媒体_seo高级优化如何进行技术优化
SEO高级优化如何利用社交媒体 在当前的数字营销环境中,搜索引擎优化(SEO)已经不再是一个简单的任务,它已经演变成了一个复杂而多层次的过程。SEO高级优化不仅仅涉及内容创作,还包括技术优化、用户体验以及社交媒体的有…...
C++的std--ranges适配器视图迭代器有效性保证与悬垂引用检测
C20引入的std::ranges库彻底改变了序列操作的范式,其中适配器视图(如filter、transform)通过惰性求值实现了高效的管道式编程。这种延迟执行特性也带来了迭代器有效性风险——视图可能持有悬垂引用或失效迭代器,导致未定义行为。本…...
从均值、方差到协方差:拆解SSIM公式,看懂它如何量化图像的亮度、对比度和结构相似性
从均值、方差到协方差:拆解SSIM公式,看懂它如何量化图像的亮度、对比度和结构相似性 当你看到两张几乎相同的照片时,大脑会瞬间判断它们的相似程度。但计算机如何量化这种"看起来像"的感觉?这就是结构相似性指数&#x…...
双向链表的实现与优势
文章目录双向链表的实现与优势 ✨什么是双向链表? 🤔实现双向链表 💻双向链表的优势 🌟应用示例:浏览器历史记录 🌐总结 📚双向链表的实现与优势 ✨ 在计算机科学中,数据结构是组织…...
告别论文 “红标警告”!Paperxie 四大降重降 AIGC 功能:让本科生毕业通关率飙升
paperxie-免费查重复率aigc检测/开题报告/毕业论文/智能排版/文献综述/AIPPThttps://www.paperxie.cn/weight?type1https://www.paperxie.cn/weight?type1 一、 论文人的崩溃瞬间:查重红了,AIGC 标了,答辩悬了 你有没有过这样的经历&#…...
OpenClaw故障自愈:千问3.5-9B分析日志自动重启服务
OpenClaw故障自愈:千问3.5-9B分析日志自动重启服务 1. 为什么需要故障自愈能力? 上周我的个人博客服务器又崩了——这已经是本月第三次因为内存泄漏导致服务不可用。每次收到报警短信,无论凌晨三点还是会议中途,都得火急火燎地连…...
【需求改变与测试如何】
需求一旦修改,测试该如何进行呢? 最近面临的项目,经过很多次需求更改或者是前期没有需求,实际操作起来,让人很是头疼,恰到也看到大家也有着相同的讨论。 来源于微信公众号:测试论道学习&#x…...
【超详细】步进电机选型避坑指南:这5个参数没搞懂,买回来就是废铁
文章目录一、保持转矩:最大误区是把它当成“工作力矩”1.1 保持转矩的物理含义:通电锁住时的最大力矩,不是转起来的力矩1.2 选型时保持转矩到底该怎么用:经验系数法1.3 实测对比:标称力矩相同的两台电机,实…...
