具有事务和身份验证的 MongoDB 单节点

时间:2021-06-19 15:26:12

标签: mongodb docker

我需要在 Docker 容器中创建一个 MongoDB 实例

  • 包含具有一个特定关联用户的多个数据库,其他人不得访问其他人的数据库(因此需要身份验证)
  • 支持交易
  • 可以通过 docker-compose 快速启动和停止

我知道只有在使用副本集时才支持事务,但我可以使用 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>

0 个答案:

没有答案
相关问题