创建docker-compose文件
version: '3.9'services:db0:image: mongo:4.0restart: alwaysmem_limit: 2Gcontainer_name: mongo-lcdp-mastervolumes:- ~/data/db/mongo-lcdp/data0:/data/db- ~/data/docker/mongo/common:/data/commonenvironment:TZ: Asia/Shanghaiports:- "27017:27017"command: mongod --replSet rs0links:- db1- db2db1:image: mongo:4.0restart: alwaysmem_limit: 2Gcontainer_name: mongo-lcdp-slave1volumes:- ~/data/db/mongo-lcdp/data1:/data/db- ~/data/docker/mongo/common:/data/commonenvironment:TZ: Asia/Shanghaicommand: mongod --replSet rs0db2:image: mongo:4.0restart: alwaysmem_limit: 2Gcontainer_name: mongo-lcdp-slave2volumes:- ~/data/db/mongo-lcdp/data2:/data/db- ~/data/docker/mongo/common:/data/commonenvironment:TZ: Asia/Shanghaicommand: mongod --replSet rs0
其中以下部分根据情况自行调整:
- image:需要哪个mongo版本
- mem_limit:每个容器最大内存限制为多少
- container_name:容器名称
- volumes:数据文件与配置文件的存储映射
- ports:运行的端口号
运行docker-compose
- 如果你的docker-compose文件名为
docker-compos.yml直接执行docker-compose up命令即可运行。 - 如果不是,则执行
docker-compose -f <文件名> up命令运行。 - 如果不需要运行在“前台”,则在末尾添加
-d。
配置主数据库
选择一个数据库容器作为主数据库(像我前面配置了mongo-test0容器使用mongo的默认端口号27017,这个就很适合当作主数据库)。执行命令 docker exec -it mongo-lcdp-master /bin/bash 进入容器,再执行 mongo 进入命令行模式。
依次执行:
切换到admin数据库
use admin
设置config变量
config = {"_id" : "rs0","protocolVersion":1,"members" : [{"_id" : 0,"host" : "db0:27017","priority":2},{"_id" : 1,"host" : "db1:27017"},{"_id" : 2,"host" : "db2:27017"}]}
让config生效
rs.initiate(config)
如果需要重置,可执行
rs.reconfig(config)。
- 完成。此时可以使用rs.status()查看集群信息,rs.isMaster()查看当前节点是否是主节点
以上内容参考博客园“skyblue°sen”的文章做的修改,欲看完整内容情移步。
