Документация MongoDb: Справочник по безопасности
Частичный ответ 1
Частичный ответ 2
1) Создайте следующую структуру файлов:
![enter image description here](https://i.stack.imgur.com/Gv3l6.png)
2) Содержимое docker-compose.yml
version: "3"
services:
mongodb:
image: "mongo:4.1.1-xenial"
restart: "unless-stopped"
env_file:
- ".env"
ports:
- "27017:27017"
volumes:
- "./database/data:/data/db" # Database files
- "./database/fixtures:/docker-entrypoint-initdb.d" # To create Db at start
3)Содержимое default.js
/* Create a New user with "only READ" role */
db = db.getSiblingDB('admin');
db.createUser(
{
"user": "John",
"pwd": "MyPassword",
"roles": [
{ "role": "read", "db": "data" }
]
})
/* Misc - Other Data */
db = db.getSiblingDB('data');
db.data.save([
{
"name": "Frank",
"email": "email1@gmail.com",
},
{
"name": "Peter",
"email": "email2@gmail.com",
}
]);
4) Содержимое .env
MONGO_INITDB_ROOT_USERNAME=Robert
MONGO_INITDB_ROOT_PASSWORD=GoodPassword
5) Перейдите в свой терминал и на уровне файла docker-compose.yml выполните:sudo docker-compose up -d
6) Получить имя контейнера:
Выполнить: sudo docker ps a
7) Перейти внутрь контейнера:
Выполнить: sudo docker exec -it <CONTAINER NAME> bash
8) Внутри контейнера:
Выполнить: mongo --host localhost -u Robert -p GoodPassword --authenticationDatabase admin
ПРИМЕЧАНИЕ: Учтите, что мы указываем «базу данных аутентификации»
9) Выберите базу данных:
Выполните: use admin
10) Показать пользователей (необходимо найти двух пользователей Роберт и Джон):
Выполнить: show users
Как вы можете видеть, внутри каталога "data" хранятся файлы oбаза данных.
И с помощью файла default.js вы можете создавать коллекции с самого начала.
ВАЖНОЕ ПРИМЕЧАНИЕ: Если вы вносите некоторые изменения, которые не отражаются в базе данных,тогда вам нужно УДАЛИТЬ содержимое «data» и запустить снова: docker-compose up -d
Можно сказать, что если каталог «data» не пуст, то файл «default.js» не будет взятво внимание.