docker-compose 搭建 mongo 4.4.2 集群

mkdir -p /data/docker-compose/mongodb/conf && cd /data/docker-compose/mongodb/

# 生成 auth.key, 用于多节点之间的认证
openssl  rand -base64  756  > ./conf/auth.key
chmod 600 ./conf/auth.key
chown -R 999.999 conf

docker-compose.yml

复制代码
version: '3.4'
services:
  mongo1:
    image: mongo:4.4.2
    network_mode: "host"
    volumes:
      - ./mongo1_data:/data/db
      - ./conf:/conf
      - /etc/localtime:/etc/localtime
    container_name: mongodb1
    command: mongod --port 27017 --replSet rs --wiredTigerCacheSizeGB 1 --keyFile /conf/auth.key 
    restart: always
    environment:
      - MONGO_INITDB_ROOT_USERNAME=root
      - MONGO_INITDB_ROOT_PASSWORD=root

  mongo2:
    image: mongo:4.4.2
    network_mode: "host"
    volumes:
      - ./mongo2_data:/data/db
      - ./conf:/conf
      - /etc/localtime:/etc/localtime
    container_name: mongodb2
    command: mongod --port 37017 --replSet rs --wiredTigerCacheSizeGB 1 --keyFile /conf/auth.key 
    restart: always

  mongo3:
    image: mongo:4.4.2
    network_mode: "host"
    volumes:
      - ./mongo3_data:/data/db
      - ./conf:/conf
      - /etc/localtime:/etc/localtime
    container_name: mongodb3
    command: mongod --port 47017 --replSet rs --wiredTigerCacheSizeGB 1 --keyFile /conf/auth.key 
    restart: always
复制代码

启动和设置集群

复制代码
docker-compose up -d


# 进入容器
docker exec -it mongodb1 /bin/bash

# 连接mongo, 进行认证
mongo 

use admin

db.auth("root","root")

# 设置集群,ip 根据自身情况设置
var config={
     _id:"rs",
     members:[
         {_id:0,host:"172.16.16.109:27017"},
         {_id:1,host:"172.16.16.109:37017"},
         {_id:2,host:"172.16.16.109:47017"}
]};

# 启动副本集
rs.initiate(config)

# 显示副本集配置对象
rs.conf()

# 查看副本集的当前状态
rs.status()

# 设置用户密码
use admin

db.createUser({ user: "admin", pwd: "admin", roles: [{ role: "userAdminAnyDatabase", db: "admin" }] })

db.createUser({user: "root",pwd: "root", roles: [ { role: "root", db: "admin" } ]})

show users
复制代码

 

posted @   浅笑19  阅读(276)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
历史上的今天:
2021-11-30 Qt状态栏添加临时消息和永久消息
2021-11-30 qt设计师中怎么添加ButtonGRoup
2021-11-30 Qt应用程序开发四:给软件添加状态栏图标和软件版本信息
2021-11-30 让QToolBar工具栏的按钮既显示图标又显示文字
2021-11-30 数据库 事务隔离级别和传播行为以及@Transactional使用规范
2021-11-30 使用java8的stream对数组进行求和
2021-11-30 java基础:简单实现线程池
点击右上角即可分享
微信分享提示