自动化之数据库:docker部署mongo,为下一步的使用打下基础

news/2025/1/12 9:16:41/

以下是一个详细的Docker Compose配置示例,用于设置一个包含三个节点的MongoDB副本集,并确保安全性(使用账号密码进行认证)。所有节点都将设置在同一个Docker网络(  py-mongo  )下,以便于未来的扩展。

0.先下载mongo镜像。

1. 创建密钥文件首先,您需要生成一个密钥文件,用于副本集成员之间的内部认证。可以使用以下命令生成密钥文件:

kt@kt-SYS-4028GR-TR2:~$ openssl rand -base64 756 > ~/mongodb-data/mongodb-keyfile.key
kt@kt-SYS-4028GR-TR2:~$ chmod 400 ~/mongodb-data/mongodb-keyfile.key
kt@kt-SYS-4028GR-TR2:~$ 

2.编写Docker Compose文件,注意这行的命令。找了好长时间。然后代码中,我无法复制出来。所以放图。

kt@kt-SYS-4028GR-TR2:~/mongodb-data$ nano docker-compose.yml 
kt@kt-SYS-4028GR-TR2:~/mongodb-data$ cat docker-compose.yml 
services:mongo1:image: mongo:latestcontainer_name: mongo1restart: alwaysvolumes:- ~/mongodb-data/data1:/data/db- ~/mongodb-data/mongodb-keyfile.key:/etc/mongodb-keyfile.keyports:- "27017:27017"command: /bin/sh -c 'mongod --replSet rs0' --keyFile /etc/mongodb-keyfile.key --authnetworks:- py-mongomongo2:image: mongo:latestcontainer_name: mongo2restart: alwaysvolumes:- ~/mongodb-data/data2:/data/db- ~/mongodb-data/mongodb-keyfile.key:/etc/mongodb-keyfile.keyports:- "27018:27017"command: /bin/sh -c 'mongod --replSet rs0' --keyFile /etc/mongodb-keyfile.key --authnetworks:- py-mongomongo3:image: mongo:latestcontainer_name: mongo3restart: alwaysvolumes:- ~/mongodb-data/data3:/data/db- ~/mongodb-data/mongodb-keyfile.key:/etc/mongodb-keyfile.keyports:- "27019:27017"command: /bin/sh -c 'mongod --replSet rs0' --keyFile /etc/mongodb-keyfile.key --authnetworks:- py-mongonetworks:py-mongo:driver: bridge
kt@kt-SYS-4028GR-TR2:~/mongodb-data$ 

 3. 启动服务在包含  docker-compose.yml  文件的目录中,运行以下命令来启动MongoDB副本集:

docker-compose up -d

 状态:

kt@kt-SYS-4028GR-TR2:~/mongodb-data$ docker ps -a
CONTAINER ID   IMAGE          COMMAND                  CREATED         STATUS                          PORTS     NAMES
d17b8804557a   mongo:latest   "docker-entrypoint.s…"   9 minutes ago   Restarting (1) 47 seconds ago             mongo2
c93a51036b89   mongo:latest   "docker-entrypoint.s…"   9 minutes ago   Restarting (1) 47 seconds ago             mongo3
8baf6759ce4f   mongo:latest   "docker-entrypoint.s…"   9 minutes ago   Restarting (1) 47 seconds ago             mongo1

4.如系统异常,请修改权限

sudo chown -R 1000:1000 ~/mongodb-data/data1
sudo chown -R 1000:1000 ~/mongodb-data/data2
sudo chown -R 1000:1000 ~/mongodb-data/data3ID,使用命令:id获取:
bashid
这将输出当前用户的用户ID(UID)、组ID(GID)以及所属的其他组信息。例如:plaintextuid=1000(your_username) gid=1000(your_username) groups=1000(your_username),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),116(lpadmin),126(sambashare)
查看特定用户的ID如果您想查看某个特定用户的ID,可以使用  id  命令并指定用户名:

5.现在的状态,

docker-compose down
docker-compose up -d
kt@kt-SYS-4028GR-TR2:~/mongodb-data$ docker ps -a
CONTAINER ID   IMAGE          COMMAND                  CREATED         STATUS                          PORTS     NAMES
d17b8804557a   mongo:latest   "docker-entrypoint.s…"   9 minutes ago   Restarting (1) 47 seconds ago             mongo2
c93a51036b89   mongo:latest   "docker-entrypoint.s…"   9 minutes ago   Restarting (1) 47 seconds ago             mongo3
8baf6759ce4f   mongo:latest   "docker-entrypoint.s…"   9 minutes ago   Restarting (1) 47 seconds ago             mongo1
kt@kt-SYS-4028GR-TR2:~/mongodb-data$ docker-compose down
Stopping mongo2 ... done
Stopping mongo3 ... done
Stopping mongo1 ... done
Removing mongo2 ... done
Removing mongo3 ... done
Removing mongo1 ... done
Removing network mongodb-data_py-mongo
kt@kt-SYS-4028GR-TR2:~/mongodb-data$ docker-compose up -d
Creating network "mongodb-data_py-mongo" with driver "bridge"
Creating mongo1 ... done
Creating mongo2 ... done
Creating mongo3 ... done
kt@kt-SYS-4028GR-TR2:~/mongodb-data$ docker ps -a
CONTAINER ID   IMAGE          COMMAND                  CREATED         STATUS                  PORTS                                             NAMES
24b43c939be0   mongo:latest   "docker-entrypoint.s…"   4 seconds ago   Up Less than a second   0.0.0.0:27019->27017/tcp, [::]:27019->27017/tcp   mongo3
c0e15a4a763d   mongo:latest   "docker-entrypoint.s…"   4 seconds ago   Up Less than a second   0.0.0.0:27018->27017/tcp, [::]:27018->27017/tcp   mongo2
9ae68c68c59f   mongo:latest   "docker-entrypoint.s…"   4 seconds ago   Up Less than a second   0.0.0.0:27017->27017/tcp, :::27017->27017/tcp     mongo1
kt@kt-SYS-4028GR-TR2:~/mongodb-data$ 

6. 初始化副本集启动容器后,连接到其中一个MongoDB实例(例如  mongo1  ),并执行以下命令初始化副本集:

docker exec -it mongo1 mongosh

7.使用管理员进入。

rs.initiate({_id: "rs0",members: [{ _id: 0, host: "mongo1:27017" },{ _id: 1, host: "mongo2:27017" },{ _id: 2, host: "mongo3:27017" }]
});

 执行过程• 连接到MongoDB实例:使用  docker exec  命令连接到容器中的MongoDB实例。• 切换到  admin  数据库:在MongoDB shell中输入  use admin  ,然后按回车键。• 执行初始化命令:输入  rs.initiate(...)  命令,并按回车键执行。MongoDB会处理副本集的初始化过程,并返回初始化结果。检查状态

 

检查状态初始化完成后,您可以检查副本集的状态,以确保所有节点都已正确加入副本集: 

rs.status()

 

未完等 


http://www.ppmy.cn/news/1562456.html

相关文章

你知道APP是怎么开发的吗?

你知道APP是怎么开发的吗? 你知道APP是怎么开发的吗?如何将开发完成的APP发布在应用市场?如何在阿里云上实现一站式App的开发、测试、运维、运营? 你知道APP是怎么开发的吗? 作为后端开发者,尽管我的主要工…

数据结构——查找二叉树

二叉搜索树的概念 如图所示&#xff0c;二叉搜索树&#xff08;binary search tree&#xff09;满足以下条件。 对于根节点&#xff0c;左子树中所有节点的值 < 根节点的值 < 右子树中所有节点的值。任意节点的左、右子树也是二叉搜索树&#xff0c;即同样满足条件 1. …

【docker】exec /entrypoint.sh: no such file or directory

dockerfile生成的image 报错内容&#xff1a; exec /entrypoint.sh: no such file or directory查看文件正常在此路径&#xff0c;但是就是报错没找到。 可能是因为sh文件的换行符使用了win的。

React 中事件机制详细介绍:概念与执行流程如何更好的理解

React 的事件机制是一个非常重要的概念&#xff0c;它涉及到 React 如何处理用户的交互事件。React 的事件系统与传统的 DOM 事件系统有所不同&#xff0c;它在底层使用了事件委托和合成事件&#xff08;Synthetic Events&#xff09;来优化性能。下面&#xff0c;我们将从 Rea…

dbeaver创建create临时表之后查询不到问题排查

前提&#xff1a;一共有三张表&#xff0c;表一和表二和表三 需求是要拿表一和表二的查询结果和表三进行关联查询 所以写了sql如下 CREATE TEMPORARY TABLE temp_reports AS SELECT gr.*, sd.dept_id, sd.parent_id FROM pc_amount_report gr LEFT JOIN sys_…

Flutter 3.x 版本升级实战:让老项目焕发新生

随着 Flutter 框架的不断更新&#xff0c;开发者时常需要面对项目升级和改造的问题。从 Flutter 2.x 到 Flutter 3.x 的版本不仅带来了新特性&#xff0c;也引入了许多 breaking changes 和架构优化。最近在做的就是 Flutter 老项目的升级改造&#xff0c;将 Flutter 的版本升到…

HarmonyOS开发:粒子动画应用实战

目录 引言 粒子动画技术概述 关于粒子动画 粒子发射器的实现 设置粒子颜色 关于粒子的生命周期 粒子扰动场的设置 粒子动画的简单实现 最后 引言 做应用开发的小伙伴想必都清楚动画是必备技能&#xff0c;尤其是在移动应用开发中的动画使用频率是非常高的。而粒子动画…

Docker: 教程07 - ( 如何对 Docker 进行降级和升级)

如果我们使用 docker 来管理容器&#xff0c;那么保持 docker 引擎的更新将会是十分重要的&#xff0c;这一篇文章我们将会讨论如何对Docker 进行降级和升级。 准备工作 - docker 环境 我们需要拥有一个安装好 docker 的运行环境。 如果你需要了解如何安装 docker 可以通过如…