创建docker-compose文件

  1. version: '3.9'
  2. services:
  3. db0:
  4. image: mongo:4.0
  5. restart: always
  6. mem_limit: 2G
  7. container_name: mongo-lcdp-master
  8. volumes:
  9. - ~/data/db/mongo-lcdp/data0:/data/db
  10. - ~/data/docker/mongo/common:/data/common
  11. environment:
  12. TZ: Asia/Shanghai
  13. ports:
  14. - "27017:27017"
  15. command: mongod --replSet rs0
  16. links:
  17. - db1
  18. - db2
  19. db1:
  20. image: mongo:4.0
  21. restart: always
  22. mem_limit: 2G
  23. container_name: mongo-lcdp-slave1
  24. volumes:
  25. - ~/data/db/mongo-lcdp/data1:/data/db
  26. - ~/data/docker/mongo/common:/data/common
  27. environment:
  28. TZ: Asia/Shanghai
  29. command: mongod --replSet rs0
  30. db2:
  31. image: mongo:4.0
  32. restart: always
  33. mem_limit: 2G
  34. container_name: mongo-lcdp-slave2
  35. volumes:
  36. - ~/data/db/mongo-lcdp/data2:/data/db
  37. - ~/data/docker/mongo/common:/data/common
  38. environment:
  39. TZ: Asia/Shanghai
  40. command: mongod --replSet rs0

其中以下部分根据情况自行调整:

  1. image:需要哪个mongo版本
  2. mem_limit:每个容器最大内存限制为多少
  3. container_name:容器名称
  4. volumes:数据文件与配置文件的存储映射
  5. 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 进入命令行模式。

依次执行:

  1. 切换到admin数据库

    1. use admin
  2. 设置config变量

    1. config = {
    2. "_id" : "rs0",
    3. "protocolVersion":1,
    4. "members" : [
    5. {
    6. "_id" : 0,
    7. "host" : "db0:27017",
    8. "priority":2
    9. },
    10. {
    11. "_id" : 1,
    12. "host" : "db1:27017"
    13. },
    14. {
    15. "_id" : 2,
    16. "host" : "db2:27017"
    17. }
    18. ]
    19. }
  3. 让config生效

    1. rs.initiate(config)

    如果需要重置,可执行rs.reconfig(config)

  1. 完成。此时可以使用rs.status()查看集群信息,rs.isMaster()查看当前节点是否是主节点

以上内容参考博客园“skyblue°sen”的文章做的修改,欲看完整内容情移步。