Иногда требуется запустить СУБД MongoDB на сервере.

Ниже расположена инструкция с двумя способами, как запустить MongoDB через Docker в Облачной ОС и без нее.

Чтобы запустить MongoDB реплику в Docker Swarm кластере перейдите по этой ссылке .

Запуск MongoDB через Облачную ОС

Установите Облачную ОС , если она была не установлена.

Импортируйте приложение MongoDB в Облачную ОС.

Запуск контейнера MongoDB без Облачной ОС

Для начала создайте сеть, в которой будет находится СУБД MongoDB со статическим IP адресом. Сеть нужно создать, т.к. стандартная сеть docker не дает возможности установить статический IP адрес у контейнера.

_x000D_docker network create -d bridge --subnet=172.20.0.0/16 dockernet -o "com.docker.network.bridge.name"="dockernet"

Скачайте официальный образ MongoDB:

_x000D_docker pull mongo:3.6.23-xenial

Создайте docker volume для базы данных MongoDB:

_x000D_docker volume create mongodb_config_x000D_docker volume create mongodb_data

Запустите mongo:

_x000D_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:

_x000D_docker exec -it mongodb_noauth mongo admin

Выполните команду. Вместо admin, admin укажите свои логин и пароль.

_x000D_use admin_x000D_db.createUser({ user: 'admin', pwd: 'admin', roles: [{ role: 'root', db: 'admin' }] })_x000D_exit

Остановите и удалите контейнер:

_x000D_docker stop mongodb_noauth_x000D_docker rm mongodb_noauth

После выполнения данной команды будет создан администратор:

Логин: admin
Пароль: admin

Добавление и редактирование пользователей в базу

Чтобы авторизоваться в Mongo базе выполните команды:

_x000D_db.auth("admin", "admin")

Добавление пользователя в базы db1, db2:

_x000D_db.createUser({ user: 'username', pwd: 'password', roles: [_x000D_ { role: 'read', db: 'admin' },_x000D_ { role: 'readWrite', db: 'db1' },_x000D_ { role: 'readWrite', db: 'db2' }_x000D_] });

Редактирование пользователя:

_x000D_db.updateUser('username', { roles: [_x000D_ { role: 'read', db: 'admin' },_x000D_ { role: 'readWrite', db: 'db1' },_x000D_ { role: 'readWrite', db: 'db2' }_x000D_] });

Список пользователей:

_x000D_db.system.users.find()

Запуск и остановка

Остановка контейнера:

_x000D_docker stop mongodb

Запуск контейнера:

_x000D_docker start mongodb

Удаление контейнера:

_x000D_docker rm mongodb

Создание базы данных в MongoDB

Подключитесь к mongo client:

_x000D_docker exec -it mongodb mongo admin

Авторизуйтесь в системе:

_x000D_db.auth('admin', 'admin');

Создайте тестовую базу и коллекцию в ней:

_x000D_use test_x000D_db.createCollection('test');