Создать Dockerfile для mongoDB 4.2 с аутентификацией - PullRequest
0 голосов
/ 05 октября 2019

как бы вы написали сценарий Dockerfile для создания пользователя-администратора для mongoDB 4.2?

Существует ли однострочная команда для создания пользователей-администраторов, не использующих интерактивный подоболочек? (ничего не видел в документации mongoDB )

Спасибо за вашу помощь.

Передача MONGO_INITDB_ROOT_USERNAME и MONGO_INITDB_ROOT_PASSWORD больше не работает (удалено из образа Docker hub mongo документация ).

В документации хаба mongo Docker показано только создание пользователя-администратора интерактивной оболочки.

> mongo admin

выполняет интерактивную оболочку mongo, но как вы пишетесценарий оболочки для ввода команд в этой подоболочке из оболочки верхнего уровня?

FROM mongo

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

Процесс сборки Docker должен отображать:

Успешно добавленный пользователь: {"user": "jsmith "," role ": [{" role ":" userAdminAnyDatabase "," db ":" admin "}]}

1 Ответ

0 голосов
/ 06 октября 2019

ОК, вот способ добавить аутентификацию через 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"
    }
  ]
});


  • создать файл Docker:
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");

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...