创建docker-compose文件
version: '3.9'
services:
db0:
image: mongo:4.0
restart: always
mem_limit: 2G
container_name: mongo-lcdp-master
volumes:
- ~/data/db/mongo-lcdp/data0:/data/db
- ~/data/docker/mongo/common:/data/common
environment:
TZ: Asia/Shanghai
ports:
- "27017:27017"
command: mongod --replSet rs0
links:
- db1
- db2
db1:
image: mongo:4.0
restart: always
mem_limit: 2G
container_name: mongo-lcdp-slave1
volumes:
- ~/data/db/mongo-lcdp/data1:/data/db
- ~/data/docker/mongo/common:/data/common
environment:
TZ: Asia/Shanghai
command: mongod --replSet rs0
db2:
image: mongo:4.0
restart: always
mem_limit: 2G
container_name: mongo-lcdp-slave2
volumes:
- ~/data/db/mongo-lcdp/data2:/data/db
- ~/data/docker/mongo/common:/data/common
environment:
TZ: Asia/Shanghai
command: 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”的文章做的修改,欲看完整内容情移步。