zoukankan      html  css  js  c++  java
  • docker-compose使用--config启动mongodb出错的采坑记录

    网上有很多关于docker-compose安装mongodb的笔记,但是对于实用config启动记录太少,我踩了一下的坑重要把这些问题都走了一遍,记录下帮助那些跟我一样遇到问题的人

    一、系统环境介绍

    1. 系统使用的是华为云服务器,ubuntu18.04
    2. 安装docker-ce 版本是19.03.9 最新稳定版
    3. docker-compose 版本是1.25.5 最新的稳定版
    4. 下载mongodb镜像是4.2.6

    二、最原始的设置

    1. docker-compose.yml的内容
    version: '3.8'
    networks:
      mynet:
        external: true
    services:
      mongodb:
        image: mongo:4.2.6
        networks:
          - mynet
        env_file:
          - ./.env
        volumes:
          - /etc/localtime:/etc/localtime:ro
          - /etc/timezone:/etc/timezone:ro
          - /data/mongo_cluster/2727/db:/data/mongo/db
          - /data/mongo_cluster/2727/log:/data/mongo/log
          - /data/mongo_cluster/2727/2727.conf:/data/mongo/mongo.conf
        container_name: mongo_main
        environment:
          - MONGO_INITDB_ROOT_USERNAME=qumogu
          - MONGO_INITDB_ROOT_PASSWORD=xxxxsss
        command: mongod -- config /data/mongo/mongo.conf
        ports:
          - 2727:27017
        restart: always
        logging:
          driver: json-file
          options:
            max-file: '2'
            max-size: 100m
    
    
    1. mongo.conf配置文件内容
    logpath=/data/mongo/log/mongo.log
    logappend=true
    fork = true
    port = 27027
    dbpath=/data/mongo/db
    cpu = true
    auth = true
    bind_ip = 0.0.0.0
    maxConns = 100
    objcheck = true
    pidfilepath = /data/mongo/run/mongo.pid
    

    三、启动报错情况

    1. 第一错误:mongodb forked process: 48 ERROR: child process failed, exited with error number 1
    2. 第二错误:error (at /tmp/docker-entrypoint-config.json:1): Cannot index string with string "systemLog"
    3. 第三错误:child process successful,parent failed

    四、配置的问题

    1. docker-compose.yml的配置问题:

      • command 后面不需要再用mongod了,因为官方docker镜像已经用了,详情情况dockerfile链接
      • mongodb容器里面,使用的用户是mongodb,不是root,如果不是容器里原有的目录,挂载后mongodb就无权读取,这是就是错误1的原因。
      • 默认的容器里面,/data/db 和 /data/configdb mongodb用户是有权限,所以,挂载文件就放在这些目录下
      • volumes 挂载目录和文件不一样,不能用挂载目录的方式,挂载文件
    2. mongo.conf的配置问题

      • fork = true 这个配置,导致第三个错误,找不到父进程,系统无法启动,所以需要去除

    五、修改后配置

    1. docker-compose.yml
    version: '3.8'
    networks:
      mynet:
        external: true
    services:
      mongodb:
        image: mongo:4.2.6
        networks:
          - mynet
        env_file:
          - ./.env
        volumes:
          - /etc/localtime:/etc/localtime:ro
          - /etc/timezone:/etc/timezone:ro
          - /data/mongo_cluster/2727/db:/data/db
          - /data/mongo_cluster/2727/opt:/data/configdb
        container_name: mongo_main
        environment:
          - MONGO_INITDB_ROOT_USERNAME=qumogu
          - MONGO_INITDB_ROOT_PASSWORD=xxxxsss
            # command: --auth --bind_ip 0.0.0.0 --logpath=/data/configdb/log/db.log
        command: --config /data/configdb/mongo.conf
        ports:
          - 2727:27017
        restart: always
        logging:
          driver: json-file
          options:
            max-file: '2'
            max-size: 100m
    
    
    1. mongo.conf
    port = 27017
    dbpath=/data/db
    maxConns = 10000
    auth = true
    bind_ip = 0.0.0.0
    logpath=/data/configdb/log/mongo.log
    logappend=true
    objcheck = true
    
    
    1. yml配置文件里直接接参数,可能比conf文件,更方便,或者在官方镜像的基础再用dockerfile制作一个镜像会更方便
      https://www.cnblogs.com/xsi640/p/3765911.html
  • 相关阅读:
    Leetcode-784 Letter Case Permutation(字母大小写全排列)
    Leetcode-450 Delete Node in a BST(删除二叉搜索树中的节点)
    Leetcode-423 Reconstruct Original Digits from English(从英文中重建数字)
    Leetcode-692 Top K Frequent Words(前K个高频单词)
    Leetcode-355 Design Twitter(设计推特)
    Leetcode-229 Majority Element II(求众数 II)
    Leetcode-557 Reverse Words in a String III(反转字符串中的单词 III)
    LeetCode
    LeetCode
    LeetCode
  • 原文地址:https://www.cnblogs.com/qumogu/p/12943912.html
Copyright © 2011-2022 走看看