Запуск MongoDB в Docker контейнере
Иногда требуется запустить СУБД MongoDB на сервере.
Ниже расположена инструкция с двумя способами, как запустить MongoDB через Docker в Облачной ОС и без нее.
Чтобы запустить MongoDB реплику в Docker Swarm кластере перейдите по этой ссылке.
Запуск MongoDB через Облачную ОС
Установите Облачную ОС, если она была не установлена.
Импортируйте приложение MongoDB в Облачную ОС.
Запуск контейнера MongoDB без Облачной ОС
Для начала создайте сеть, в которой будет находится СУБД MongoDB со статическим IP адресом. Сеть нужно создать, т.к. стандартная сеть docker не дает возможности установить статический IP адрес у контейнера.
docker network create -d bridge --subnet=172.20.0.0/16 dockernet -o "com.docker.network.bridge.name"="dockernet"
Скачайте официальный образ MongoDB:
docker pull mongo:3.6.23-xenial
Создайте docker volume для базы данных MongoDB:
docker volume create mongodb_config
docker volume create mongodb_data
Запустите mongo:
docker run -d --name mongodb --log-driver=journald --restart=unless-stopped --ip=172.20.0.6 --network="dockernet" -v mongodb_config:/data/configdb -v mongodb_data:/data/db mongo:3.6.23-xenial --auth
MongoDB будет запущен на 172.20.0.6:27017
Создание пользователя администратора
Подключитесь к консоли управления MongoDB:
docker exec -it mongodb_noauth mongo admin
Выполните команду. Вместо admin, admin укажите свои логин и пароль.
use admin
db.createUser({ user: 'admin', pwd: 'admin', roles: [{ role: 'root', db: 'admin' }] })
exit
Остановите и удалите контейнер:
docker stop mongodb_noauth
docker rm mongodb_noauth
После выполнения данной команды будет создан администратор:
Логин: admin
Пароль: admin
Добавление и редактирование пользователей в базу
Чтобы авторизоваться в Mongo базе выполните команды:
db.auth("admin", "admin")
Добавление пользователя в базы db1, db2:
db.createUser({ user: 'username', pwd: 'password', roles: [
{ role: 'read', db: 'admin' },
{ role: 'readWrite', db: 'db1' },
{ role: 'readWrite', db: 'db2' }
] });
Редактирование пользователя:
db.updateUser('username', { roles: [
{ role: 'read', db: 'admin' },
{ role: 'readWrite', db: 'db1' },
{ role: 'readWrite', db: 'db2' }
] });
Список пользователей:
db.system.users.find()
Запуск и остановка
Остановка контейнера:
docker stop mongodb
Запуск контейнера:
docker start mongodb
Удаление контейнера:
docker rm mongodb
Создание базы данных в MongoDB
Подключитесь к mongo client:
docker exec -it mongodb mongo admin
Авторизуйтесь в системе:
db.auth('admin', 'admin');
Создайте тестовую базу и коллекцию в ней:
use test
db.createCollection('test');