1. 下载镜像
docker pull mongo:6.0.8
2. 在 /data/mongodb 目录下新建 mongodb-1、mongodb-2、mongodb-3 三个文件夹
3. 生成keyfile文件
# 400权限是要保证安全性,否则mongod启动会报错
openssl rand -base64 756 > mongodb.key
chown 999:999 mongodb.key
将生成的mongodb.key文件分别复制到mongodb-1、mongodb-2、mongodb-3 三个文件夹
4. 在/data/mongodb目录下新建docker-compose.yml文件,内容如下:
version: '3.3'
services:
mongodb1:
image: mongo:6.0.8
volumes:
- /data/mongodb/mongodb-1:/data/db
- /data/mongodb/mongodb-1/mongodb.key:/data/mongodb.key
user: root
environment:
- MONGO_INITDB_ROOT_USERNAME=root
- MONGO_INITDB_ROOT_PASSWORD=admin
container_name: mongodb1
ports:
- 37017:27017
command: mongod --replSet mongos --keyFile /data/mongodb.key
restart: always
entrypoint:
- bash
- -c
- |
chmod 400 /data/mongodb.key
chown 999:999 /data/mongodb.key
exec docker-entrypoint.sh $$@
mongodb2:
image: mongo:6.0.8
volumes:
- /data/mongodb/mongodb-2:/data/db
- /data/mongodb/mongodb-2/mongodb.key:/data/mongodb.key
user: root
environment:
- MONGO_INITDB_ROOT_USERNAME=root
- MONGO_INITDB_ROOT_PASSWORD=admin
container_name: mongodb2
ports:
- 37018:27017
command: mongod --replSet mongos --keyFile /data/mongodb.key
restart: always
entrypoint:
- bash
- -c
- |
chmod 400 /data/mongodb.key
chown 999:999 /data/mongodb.key
exec docker-entrypoint.sh $$@
mongodb3:
image: mongo:6.0.8
volumes:
- /data/mongodb/mongodb-3:/data/db
- /data/mongodb/mongodb-3/mongodb.key:/data/mongodb.key
user: root
environment:
- MONGO_INITDB_ROOT_USERNAME=root
- MONGO_INITDB_ROOT_PASSWORD=admin
container_name: mongodb3
ports:
- 37019:27017
command: mongod --replSet mongos --keyFile /data/mongodb.key
restart: always
entrypoint:
- bash
- -c
- |
chmod 400 /data/mongodb.key
chown 999:999 /data/mongodb.key
exec docker-entrypoint.sh $$@
5. 启动容器
# 后台启动并运行所有容器
docker-compose up -d
6. 查看容器启动情况
docker ps | grep mongo
或者
# 查看运行的容器
docker ps
7. 进入容器
docker exec -it mongodb1 /bin/bash
执行mongod --version 说明启动成功
#连接mongo
mongosh -u root -p admin
注意:MongoDB 6.0全面弃用了mongo而使用mongosh
8. 执行初始化
# 需将IP替换成自己的主机IP
rs.initiate({ _id: "mongos", members: [
{ _id : 0, host : "IP:37017" },
{ _id : 1, host : "IP:37018" },
{ _id : 2, host : "IP:37019" },
]})
9. 查看状态
rs.status()
标签:副本,mongo,mongodb,999,key,docker,data,搭建
From: https://blog.51cto.com/u_16164025/7111279