【问题标题】:Create Dockerfile for mongoDB 4.2 with authentication使用身份验证为 mongoDB 4.2 创建 Dockerfile
【发布时间】:2020-02-03 14:41:57
【问题描述】:

您将如何编写 Dockerfile 脚本来为 mongoDB 4.2 创建管理员用户?

是否有不使用交互式子shell 创建管理员用户的单行命令? (在 mongoDB documentation 中没有看到)

感谢您的帮助。

传递 MONGO_INITDB_ROOT_USERNAME 和 MONGO_INITDB_ROOT_PASSWORD 不再起作用(已从 Docker hub mongo 映像 documentation 中删除)。

mongo Docker hub 文档仅显示交互式 shell 管理员用户创建。

> mongo admin

执行 mongo 交互式 shell,但是如何编写 shell 脚本以从顶级 shell 中的子 shell 中输入命令?

FROM mongo

RUN mongo admin ???? db.createUser({ user: 'jsmith', pwd: 'some-initial-password', roles: [ { role: "userAdminAnyDatabase", db: "admin" } ] });

docker 构建过程应该显示:

成功添加用户:{ “用户”:“jsmith”, “角色”:[ { “角色”:“userAdminAnyDatabase”, “分贝”:“管理员” } ] }

【问题讨论】:

    标签: mongodb bash docker authentication dockerfile


    【解决方案1】:

    好的,这是通过 Dockerfile 添加身份验证的方法。

    • 创建init.js 文件:
    db = new Mongo().getDB("admin");
    
    // create admin user
    
    db.createUser({
      user: "admin",
      pwd: "password",
      roles: [
        {
          role: "clusterAdmin",
          db: "admin"
        }
      ]
    });
    
    
    // create non admin user
    
    db.createUser({
      user: "toto",
      pwd: "123",
      roles: [
        {
          role: "readWrite",
          db: "tube"
        }
      ]
    });
    
    
    
    • 创建 Dockerfile:
    FROM mongo
    
    # init.js will be executed when the mongo instance runs
    
    COPY ./init.js ./docker-entrypoint-initdb.d
    
    • 构建您的 docker 映像

    docker build -t mongoAuth .

    • 运行容器(附加模式查看日志)

    docker run --name mongoContainer -p 27017:27017 mongoAuth

    我缺少的是我没有使用以下方法设置创建用户的数据库(管理数据库):

    db = new Mongo().getDB("admin");

    【讨论】:

    • 唯一缺少的是如何在mongo脚本中使用环境变量来避免明文设置值。
    • 将环境变量传递给 mongo shell 脚本的方法是使用 --eval 标志。示例:mongo --eval "var myVar = '$MY_VAR' " myScript.js 。要在 Dockerfile 步骤中运行它,您需要一个运行中的 mongod 进程,如下所示:RUN mongod& sleep 4; mongo --eval "var myVar = '$MY_VAR' " myScript.js
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多