假设我们具有以下未进行身份验证的设置...
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
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
参数。
有人知道要解决这个问题的方法吗?
欢呼!