美文网首页
docker-compose安装mongodb说明

docker-compose安装mongodb说明

作者: ThinkSong | 来源:发表于2020-08-25 19:06 被阅读0次

    1. docker安装mongodb说明

    1.1. 配置docker-compose.yml

    mongod.conf内容如下,一般只需要修改wiredTiger.engineConfig.cacheSizeGB,具体大小请查考官方文档

    # mongod.conf
    
    # for documentation of all options, see:
    #   http://docs.mongodb.org/manual/reference/configuration-options/
    
    # Where and how to store data.
    storage:
      dbPath: /data/db
      journal:
        enabled: true
      directoryPerDB: true
      engine: wiredTiger
      wiredTiger:
        engineConfig:
          cacheSizeGB: 8
          directoryForIndexes: true
    
    # where to write logging data.
    systemLog:
      destination: file
      logAppend: true
      path: /var/log/mongodb/mongod.log
    
    # network interfaces
    net:
      port: 27017
      bindIp: 0.0.0.0
    
    # how the process runs
    processManagement:
      timeZoneInfo: /usr/share/zoneinfo
    
    #replication:
    replication:
       oplogSizeMB: 51200
       replSetName: rs0
    
    

    创建文件夹用来持久化数据

    # db存放数据库文件,log存放mongodb日志,config存放mongodb配置文件
    mkdir db log config
    # 由于log文件夹需要被容器读写,所以要授权
    chmod 777 -R log
    

    目前是副本集模式,需要拷贝该文件,修改其中container_name, portsvolumes

    version: '3.8'
    
    services:
      mongo:
        image: mongo
        container_name: mongo1
        restart: always
        command: --config /etc/mongo/mongod.conf
        ports:
          - 27001:27017
        volumes:
          # 挂载数据目录
          - /home/docker-compose/mongo1/db:/data/db
          # 挂载日志目录
          - /home/docker-compose/mongo1/log:/var/log/mongodb
          # 挂载配置目录
          - /home/docker-compose/mongo1/config:/etc/mongo
    
    

    1.2. 启动程序

    mongodb部署在172.17.0.3:/home/docker-compose

    # 程序后台启动
    docker-compose up -d
    

    1.3. 配置副本集

    使用mongo连接服务器

    ./mongo --port 27001
    

    进入mongodb后,使用命令设置副本集成员
    _id也就是副本集名称在mongod.conf指定了

    rs.initiate( {
       _id : "rs0",
       members: [
          { _id: 0, host: "172.17.0.3:27001" },
          { _id: 1, host: "172.17.0.3:27002" },
          { _id: 2, host: "172.17.0.3:27003", arbiterOnly: true }
       ]
    })
    // 查看目前节点的属性,一般为PRIMARY,SECONDARY和ARBITER三种
    rs.status()
    

    1.4. 开启用户权限配置

    1.4.1. 创建用户

    ./mongo --port 27001
    # 切换到admin数据库,做授权
    use admin
    # 查看内建的角色
    show roles
    db.createUser({user:"root", pwd: "admin#123", roles: [{role: "root", db: "admin"}]})
    

    1.4.2. 停止节点

    使用docker-compose stop命令依次停止从节点mongo2,仲裁节点mongo3,主节点mongo1

    1.4.3. 创建节点间认证文件

    根据官方文档所述,副本集和分片集群间的节点之间需要认证。

    Replica sets and sharded clusters require internal authentication between members when access control is enabled.
    For more details, please see Internal/Membership Authentication.

    # 使用openssl在当前目录生成keyfile
    openssl rand -base64 756 > keyfile
    # 因为该文件是root用户创建,所以要变更用户为mongodb用户systemd-coredump和读权限
    # 如果权限过大,mongodb启动后会报错permissions on XXXX are too open
    chmod 400 keyfile
    chown systemd-coredump keyfile
    # 将该文件拷贝到其他mongodb节点上
    cp keyfile /home/docker-compose/mongo1/config/
    cp keyfile /home/docker-compose/mongo2/config/
    cp keyfile /home/docker-compose/mongo3/config/
    

    1.4.4. 修改mongod.conf配置

    添加以下内容

    security:
      keyFile: /etc/mongo/keyfile
      authorization: enabled
    

    1.4.5. 重新启动副本集

    使用docker-compose start命令依次启动主节点mongo1,仲裁节点mongo3和从节点mongo2

    1.5. 停止程序

    # 停止容器并删除容器
    docker-compose down
    

    1.6. 升级程序

    # 停止程序并删除镜像
    docker-compose down --rmi all
    # 拉取新的镜像
    docker-compose pull
    # 启动程序
    docker-compose up -d
    

    1.7. 卸载程序

    要想完全卸载,需要删除docker镜像和数据

    # 停止容器并删除容器、镜像
    docker-compose down --rmi all
    # 删除镜像
    docker rmi mongo
    # 删除本地文件
    rm -r /home/docker-compose/mongo1
    

    1.8. 参考资料

    1. dockerhub上mongo页面
    2. mongodb官方文档

    相关文章

      网友评论

          本文标题:docker-compose安装mongodb说明

          本文链接:https://www.haomeiwen.com/subject/uzwzjktx.html