记使用docker创建mongo挂载keyFile错误

 这是我mongo的配置文件,可以看到我是开启了复制集。复制集名为test

# mongod.conf

# for documentation of all options, see:
#   http://docs.mongodb.org/manual/reference/configuration-options/

# where to write logging data.
systemLog:
  destination: file
  logAppend: true
  logRotate: reopen
  path: /data/log/mongod.log

# Where and how to store data.
storage:
  dbPath: /data/db
  journal:
    enabled: true
#  engine:
#  mmapv1:
  wiredTiger:
    engineConfig:
      cacheSizeGB: 2.5

# how the process runs
#processManagement:
#  fork: true  # fork and run in background
#  pidFilePath: /var/run/mongodb/mongod.pid  # location of pidfile
#  timeZoneInfo: /usr/share/zoneinfo

# network interfaces
net:
  port: 27017
  bindIp: 0.0.0.0  # Enter 0.0.0.0,:: to bind to all IPv4 and IPv6 addresses or, alternatively, use the net.bindIpAll setting.


security:
  # 开启登录效验
   authorization: enabled
  # 存放keyFile位置
   keyFile: /data/keyFile
#operationProfiling:

replication:
  replSetName: test

#sharding:

## Enterprise-Only Options

#auditLog:

#snmp:
setParameter:
   enableLocalhostAuthBypass: false

这是我创建mongo的docke-compose.yml。因为keyFile文件要保持一样,所以用的同一个文件。

version: '3'

services:
  mongo-test27:
    image: mongo:4.0
    container_name: mongo-test27
    restart: always
    privileged: true
    ports:
      - 37027:27017
    volumes:
      - /home/mongo/db/37027/config:/data/config
      - /home/mongo/db/37027/db:/data/db
      - /home/mongo/db/37027/log:/data/log
      - /home/mongo/keyFile:/data/keyFile
    environment:
      TZ: 'Asia/Shanghai'    
    command: -f /data/config/mongod.conf 
    logging:
        driver: json-file
        options:
          max-file: '2'
          max-size: 100m
    networks:
      - mongo-test

  mongo-test37:
    image: mongo:4.0
    container_name: mongo-test37
    restart: always
    privileged: true
    ports:
      - 37037:27017
    volumes:
      - /home/mongo/db/37037/config:/data/config
      - /home/mongo/db/37037/db:/data/db
      - /home/mongo/db/37037/log:/data/log
      - /home/mongo/keyFile:/data/keyFile
    environment:
      TZ: 'Asia/Shanghai'
    command: -f /data/config/mongod.conf 
    logging:
        driver: json-file
        options:
          max-file: '2'
          max-size: 100m
    networks:
      - mongo-test

networks:
  mongo-test:
    driver: bridge

注意keyFile文件的权限不能太大,因为mongo会进行效验。权限为600足矣。

然后我开开心心的启动了docke-compose up -d 

 这时候我发现数据库竟然起不来了

一直显示在报错重启,遇见错误第一反应就是看日志。这时候找到我挂载的log路径下的mongod.log ,tail -f mongod.log。

发现日志里 一直在报打不开  keyFile 文件,权限不够?

我仔细检查了一番,我记得我yml里写了最高权限呀。怎么会打不开 冥思苦想半小时后 想到我是-f 使用配置文件启动 会不会是mongo容器是用mongo用户启动的 然后访问被拒绝。

这个时候我先把配置文件里的keyFile文件禁用,进到容器里查看mongo的用户组是多少。

 进去一看 这个用户用户组为999。

这时我直接chown 999:999 keyFile 修改文件的所有权。

然后重启容器 。

果然现在容器就起起来了~

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值