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

Docker 部署MongoDb

1. 编写docker-compose.conf 文件

version: '3'
services:mongo:image: mongo:latest  # 指定 MongoDB 版本,确保 >= 3.6container_name: mongo-replicarestart: alwayscommand: ["mongod", "--replSet", "rs0", "--oplogSize", "128", "--bind_ip_all"]ports:- 27017:27017volumes:- ./mongo_data:/data/dbenvironment:#初始化MongoDb管理员用户名MONGO_INITDB_ROOT_USERNAME: root#初始化MongoDb的管理员密码MONGO_INITDB_ROOT_PASSWORD: example

2. 启动

在包含 docker-compose.yml 文件的目录中运行以下命令启动 MongoDB:

docker-compose up -d

这将创建一个 MongoDB 副本集实例。--replSet 选项用于指定副本集名称为 rs0,--bind_ip_all 确保 MongoDB 绑定到所有 IP 地址。

本地27017端口映射到容器内部27017端口,把容器内部的/data/db目录挂载当前目录下的mongo_db目录,并且初始化了mongo的管理员用户和密码

3. 验证启动是否成功

命令行验证

docker ps

4. 初始化副本集

1.首次启动容器后,需要初始化 MongoDB 副本集。连接到 MongoDB 并运行以下命令:

docker exec -it mongo-replica mongo

2.然后在 MongoDB shell 中运行以下命令:

rs.initiate()

这样就初始化一个名为 rs0 的副本集。

3.验证配置

在 MongoDB shell 中,可以使用以下命令验证副本集的状态:

rs.status()rs0:PRIMARY> rs.status()
{"set" : "rs0","date" : ISODate("2024-10-24T09:31:21.318Z"),"myState" : 1,"term" : NumberLong(1),"syncingTo" : "","syncSourceHost" : "","syncSourceId" : -1,"heartbeatIntervalMillis" : NumberLong(2000),"majorityVoteCount" : 1,"writeMajorityCount" : 1,"optimes" : {"lastCommittedOpTime" : {"ts" : Timestamp(1729762278, 1),"t" : NumberLong(1)},"lastCommittedWallTime" : ISODate("2024-10-24T09:31:18.528Z"),"readConcernMajorityOpTime" : {"ts" : Timestamp(1729762278, 1),"t" : NumberLong(1)},"readConcernMajorityWallTime" : ISODate("2024-10-24T09:31:18.528Z"),"appliedOpTime" : {"ts" : Timestamp(1729762278, 1),"t" : NumberLong(1)},"durableOpTime" : {"ts" : Timestamp(1729762278, 1),"t" : NumberLong(1)},"lastAppliedWallTime" : ISODate("2024-10-24T09:31:18.528Z"),"lastDurableWallTime" : ISODate("2024-10-24T09:31:18.528Z")},"lastStableRecoveryTimestamp" : Timestamp(1729762278, 1),"lastStableCheckpointTimestamp" : Timestamp(1729762278, 1),"electionCandidateMetrics" : {"lastElectionReason" : "electionTimeout","lastElectionDate" : ISODate("2024-10-24T07:16:15.041Z"),"electionTerm" : NumberLong(1),"lastCommittedOpTimeAtElection" : {"ts" : Timestamp(0, 0),"t" : NumberLong(-1)},"lastSeenOpTimeAtElection" : {"ts" : Timestamp(1729754175, 1),"t" : NumberLong(-1)},"numVotesNeeded" : 1,"priorityAtElection" : 1,"electionTimeoutMillis" : NumberLong(10000),"newTermStartDate" : ISODate("2024-10-24T07:16:15.048Z"),"wMajorityWriteAvailabilityDate" : ISODate("2024-10-24T07:16:15.053Z")},"members" : [{"_id" : 0,"name" : "5ffc77d51cd0:27017","health" : 1,"state" : 1,"stateStr" : "PRIMARY","uptime" : 8176,"optime" : {"ts" : Timestamp(1729762278, 1),"t" : NumberLong(1)},"optimeDate" : ISODate("2024-10-24T09:31:18Z"),"syncingTo" : "","syncSourceHost" : "","syncSourceId" : -1,"infoMessage" : "","electionTime" : Timestamp(1729754175, 2),"electionDate" : ISODate("2024-10-24T07:16:15Z"),"configVersion" : 1,"self" : true,"lastHeartbeatMessage" : ""}],"ok" : 1,"$clusterTime" : {"clusterTime" : Timestamp(1729762278, 1),"signature" : {"hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="),"keyId" : NumberLong(0)}},"operationTime" : Timestamp(1729762278, 1)
}

5. 登陆MongoDb

可以通过mongo客户端或者Docker命令登陆,这里选择使用MongoDb自带的图形化工具进行登录

1.输入host,勾选Direct Connecton

2.点到Authentication,输入用户名密码和认证数据库

3.保存&登录

6. 创建角色和用户

1.点击Open MongoDB shell进入mongo shell

2.创建角色 用户分配权限

use admin;
db.createRole({role: "flinkrole",privileges: [{// 所有数据库中所有非系统集合的 grant 权限resource: { db: "", collection: "" },actions: ["splitVector","listDatabases","listCollections","collStats","find","changeStream" ]}],roles: [// 阅读 config.collections 和 config.chunks// 用于分片集群快照拆分。{ role: 'read', db: 'config' }]}
);db.createUser({user: 'flinkuser',pwd: 'flinkpw',roles: [{ role: 'flinkrole', db: 'admin' }]}
);

就可以使用新创建的用户进行登录MongoDb了

http://www.lryc.cn/news/471942.html

相关文章:

  • 【Hadoop】hadoop的路径分不清?HDFS路径与本地文件系统路径的区别
  • 倪师学习笔记-天纪-易经八卦
  • 自动驾驶性能分析时,非常有用的两个信息
  • 数据结构 - 并查集
  • canvas基础+应用+实例
  • Linux命令 用户操作简介
  • 大语言模型的Scaling Law【Power Low】
  • windows环境下,使用docker搭建redis集群
  • Python(pandas库3)
  • WPF+MVVM案例实战(十)- 水波纹按钮实现与控件封装
  • 数据结构————map,set详解
  • fdisk - Linux下的磁盘分区利器
  • or-tools优化库记录
  • M1 Pro MacBook Pro 上的奇遇:Rust 构建失败,SIGKILL 惊魂记
  • 重构商业生态:DApp创新玩法与盈利模式的深度剖析
  • 2024首届亚洲国际电影节圆满落下帷幕
  • 【Mybatis】动态SQL+配置文件+数据库连接池+企业规范(10)
  • layui扩展组件之----右键菜单
  • ue5实现数字滚动增长
  • Flink(一)
  • kaggle 数据集下载
  • Linux shell编程学习笔记87:blkid命令——获取块设备信息
  • wireshark筛选条件整理
  • 基于现代 C++17 的模块化视频质量诊断处理流程设计
  • 高级java每日一道面试题-2024年10月23日-JVM篇-说一下JVM有哪些垃圾回收算法?
  • 高效文本编辑与导航:Vim中的三种基本模式及粘滞位的深度解析
  • w005基于Springboot学生心理咨询评估系统
  • 实战-任意文件下载
  • PG数据库之视图详解
  • 时间序列预测(十五)——有关Python项目框架的实例分析