我需要在 Docker 容器中创建一个 MongoDB 实例
我知道只有在使用副本集时才支持事务,但我可以使用 rs.initiate()
解决这个问题。
但我未能将其与启用身份验证结合起来。
我的 docker-compose 目前看起来像这样:
version: '3.4'
services:
mongodb-exams:
image: mongo:4.4.2-bionic
container_name: mongodb-exams
hostname: mongodb
volumes:
- $HOME/databases/mongodb:/data/mongodb
environment:
- MONGO_INITDB_ROOT_USERNAME=rootUser
- MONGO_INITDB_ROOT_PASSWORD=rootUserPwd
ports:
- "27017:27017"
healthcheck:
test: test $$(echo "rs.initiate().ok || rs.status().ok" | mongo --quiet) -eq 1
interval: 10s
start_period: 30s
command: mongod --auth --replSet examrs
restart: unless-stopped
volumes:
data:
driver: local
这会导致复制集没有正确初始化。
删除 --auth
标志允许副本集工作,但我需要两者。
我的想法是用管理员用户启动容器,然后在 shell 中运行脚本来创建数据库和相关用户。
我认为问题是,应该启动副本集的 mongo shell 没有经过身份验证,因此它无法完成其工作,但我不知道如何自动登录。< /p>