docker-compose之mongodb副本集部署

1. 概览

  • docker版本:Docker version 20.10.7
  • docker-compose版本:docker-compose version 1.27.3
  • mongodb镜像版本:mongo:4.4.10

 

2. 介绍

MongoDB 是一个基于分布式文件存储的数据库。由 C++ 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。

MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。

 

3. 部署

3.1 创建认证文件keyfile

openssl rand -base64 756 > mongodb.key
chmod 400 mongodb.key

 

 

3.2 编写docker-compose.yml文件

version: '3.1'

services:
  mongodb1:
    image: mongo:4.4.10
    restart: always
    container_name: mongo1
    volumes:
      - ./data/db/mongo1:/data/db
      - ./mongodb.key:/data/mongodb.key
    ports:
      - 27017:27017
    environment:
      MONGO_INITDB_ROOT_USERNAME: ${MONGO_INITDB_ROOT_USERNAME}
      MONGO_INITDB_ROOT_PASSWORD: ${MONGO_INITDB_ROOT_PASSWORD}
    networks:
      - mongoNet
    command: mongod --replSet mongos --keyFile /data/mongodb.key
    entrypoint:
      - bash
      - -c
      - |
        chmod 400 /data/mongodb.key
        chown 999:999 /data/mongodb.key
        exec docker-entrypoint.sh $$@

  mongodb2:
    image: mongo:4.4.10
    restart: always
    container_name: mongo2
    volumes:
      - ./data/db/mongo2:/data/db
      - ./mongodb.key:/data/mongodb.key
    ports:
      - 27018:27017
    environment:
      MONGO_INITDB_ROOT_USERNAME: ${MONGO_INITDB_ROOT_USERNAME}
      MONGO_INITDB_ROOT_PASSWORD: ${MONGO_INITDB_ROOT_PASSWORD}
    networks:
      - mongoNet
    command: mongod --replSet mongos --keyFile /data/mongodb.key
    entrypoint:
      - bash
      - -c
      - |
        chmod 400 /data/mongodb.key
        chown 999:999 /data/mongodb.key
        exec docker-entrypoint.sh $$@

  mongodb3:
    image: mongo:4.4.10
    restart: always
    container_name: mongo3
    volumes:
      - ./data/db/mongo3:/data/db
      - ./mongodb.key:/data/mongodb.key
    ports:
      - 27019:27017
    environment:
      MONGO_INITDB_ROOT_USERNAME: ${MONGO_INITDB_ROOT_USERNAME}
      MONGO_INITDB_ROOT_PASSWORD: ${MONGO_INITDB_ROOT_PASSWORD}
    networks:
      - mongoNet
    command: mongod --replSet mongos --keyFile /data/mongodb.key
    entrypoint:
      - bash
      - -c
      - |
        chmod 400 /data/mongodb.key
        chown 999:999 /data/mongodb.key
        exec docker-entrypoint.sh $$@
    
networks:
  mongoNet:
    driver: bridge

 

3.3 启动compose文件并设置副本集

  • 启动compose文件
docker-compose up -d
  • 进入其中一个容器进行副本集初始化
docker exec -it mongo1 bash
mongo -u root -p admin
#查询副本集状态
rs.status()
{
	"ok" : 0,
	"errmsg" : "no replset config has been received",
	"code" : 94,
	"codeName" : "NotYetInitialized"
}
#初始化副本集
rs.initiate({
    _id: "mongos",
    members: [
        { _id : 0, host : "192.168.2.220:27017" },
        { _id : 1, host : "192.168.2.220:27018" },
        { _id : 2, host : "192.168.2.220:27019" }
    ]
});
#再次查询副本集状态
rs.status()

PS:镜像不要使用5.0以上的镜像,会报错cpu不支持avx

 

 

 

 

版权声明:
作者:lee
链接:https://www.goufusheng.top/archives/722
来源:苟浮生的桃花扇
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
< <上一篇
下一篇>>
文章目录
关闭
目 录