Офіційне mongoзображення вже злитий в PR , щоб включити функціональні можливості для створення користувачів і баз даних при запуску.
Ініціалізація бази даних буде виконуватися, коли в /data/dbкаталозі нічого не заповнено .
Налаштування адміністратора
Змінні середовища для управління "кореневим" налаштуванням користувача є
MONGO_INITDB_ROOT_USERNAME
MONGO_INITDB_ROOT_PASSWORD
Приклад
docker run -d \
-e MONGO_INITDB_ROOT_USERNAME=admin \
-e MONGO_INITDB_ROOT_PASSWORD=password \
mongod
Вам не потрібно / не можна використовувати --authв командному рядку, оскільки скрипт docker entrypoint.sh додає це, коли існують змінні середовища.
Ініціалізація бази даних
Зображення також надає /docker-entrypoint-initdb.d/шлях до розгортання настроюваних сценаріїв .jsабо .shсценаріїв налаштування, які будуть запускатися один раз при ініціалізації бази даних. .jsсценарії запускатимуться testза замовчуванням або MONGO_INITDB_DATABASEякщо вони визначені в середовищі.
COPY mysetup.sh /docker-entrypoint-initdb.d/
або
COPY mysetup.js /docker-entrypoint-initdb.d/
Простий файл javascript оболонки mongo, який демонструє налаштування containerколекції з даними, ведення журналу та спосіб виходу з помилкою (для перевірки результату).
let error = true
let res = [
db.container.drop(),
db.container.createIndex({ myfield: 1 }, { unique: true }),
db.container.createIndex({ thatfield: 1 }),
db.container.createIndex({ thatfield: 1 }),
db.container.insert({ myfield: 'hello', thatfield: 'testing' }),
db.container.insert({ myfield: 'hello2', thatfield: 'testing' }),
db.container.insert({ myfield: 'hello3', thatfield: 'testing' }),
db.container.insert({ myfield: 'hello3', thatfield: 'testing' }),
db.other.
]
printjson(res)
if (error) {
print('Error, exiting')
quit(1)
}