Пользователь в скрипте в Docker
Пользователь в скрипте появляется вместе с первым документом, а не отдельной кнопкой после старта. На пустом томе образ читает пароль root из окружения, выполняет файлы старта и только потом принимает обычные подключения.
В init/app.js
кладут запись,
затем создают учётку app
с паролем demo
и ролью readWrite
для базы app:
db = db.getSiblingDB('app');
db.notes.insertOne({ text: 'hello' });
db.createUser({
user: 'app',
pwd: 'demo',
roles: [{ role: 'readWrite', db: 'app' }]
});
Сервис db на mongo:8.3
монтирует свой пустой том userdata
в /data/db,
папку старта
и задаёт root
с паролем demo:
services:
db:
image: mongo:8.3
environment:
MONGO_INITDB_ROOT_USERNAME: root
MONGO_INITDB_ROOT_PASSWORD: demo
volumes:
- userdata:/data/db
- ./init:/docker-entrypoint-initdb.d
volumes:
userdata:
Фоновый подъём проекта выполняют так:
docker compose up -d
Проверка идёт под логином app,
паролем demo
и базой app -
короткий ping проходит,
отдельная таблица вывода
в уроке не нужна:
docker compose exec db mongosh --quiet -u app -p demo --authenticationDatabase app app --eval "db.runCommand({ ping: 1 })"
Опишите на томе teamdata прикладного пользователя writer с учебным паролем и ролью записи в базе app в том же JavaScript, что и первый документ.
Отметьте, что вход под writer в app проходит, а анонимный запрос на этом томе отказывает.