如何使用docker-compose使用mongo容器设置身份验证和副本集?

时间:2020-10-30 17:27:15

标签: mongodb docker docker-compose replicaset

假设我们具有以下未进行身份验证的设置...

docker-compose.yaml

services:
  db:
    image: mongo:4.4.1
    volumes:
      - ./mongo-init.js:/docker-entrypoint-initdb.d/mongo-init.js
    command: --bind_ip_all --replSet RepSet
    ports: 
      - 27017:27017

mongo-init.js

rs.initiate(
  {
    _id: "RepSet",
    version: 1,
    members: [
      { _id: 0, host: "localhost:27017" }
    ]
  })

以上方法有效,并且复制已在单节点副本集模式下正确设置,但是...

如何通过上述设置启用mongo身份验证?

如果我将以下环境变量添加到db服务,则rs.initiate()中的mongo-init.js不起作用。它抱怨服务器是在没有复制的情况下启动的。

  db:
    environment:
      - MONGO_INITDB_ROOT_USERNAME=admin
      - MONGO_INITDB_ROOT_PASSWORD=password

如果使用身份验证凭据,显然,mongo docker映像入口点脚本会在初始设置期间去除--replSet参数。

有人知道要解决这个问题的方法吗?

欢呼!

0 个答案:

没有答案
相关问题