Офіційне 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)
}