Thank you for reading this post, don't forget to subscribe!
Иногда требуется запустить СУБД MongoDB на сервере. Ниже описана инструкция, как запустить MongoDB через Docker.
Для начала создайте сеть, в которой будет находится СУБД MongoDB со статическим IP адресом. Сеть нужно создать, т.к. стандартная сеть docker не дает возможности установить статический IP адрес у контейнера.
1 |
docker network create -d bridge --subnet=172.20.0.0/16 dockernet -o "com.docker.network.bridge.name"="dockernet" |
Скачайте официальный образ MongoDB:
1 |
docker pull mongo:3.6.1-jessie |
Создайте docker volume для базы данных MongoDB:
1 2 |
docker volume create mongodb_config docker volume create mongodb_data |
Создание пользователя администратора
Запустите mongo без авторизации:
1 |
docker run -d --name mongodb_noauth --ip=172.20.0.6 --log-driver=journald --network="dockernet" -v mongodb_config:/data/configdb -v mongodb_data:/data/db mongo:3.6.1-jessie |
Подключитесь к консоли управления MongoDB:
1 |
docker exec -it mongodb_noauth mongo admin |
Выполните команду:
1 2 3 |
use admin db.createUser({ user: 'jsmith', pwd: 'some-initial-password', roles: [{ role: 'root', db: 'admin' }] }) exit |
Остановите и удалите контейнер:
1 2 |
docker stop mongodb_noauth docker rm mongodb_noauth |
После выполнения данной команды будет создан администратор:
Логин: jsmith
Пароль: some-initial-password
Создание рабочего контейнера MongoDB
После того, как база и пользователь были созданы, запустите образ с пробросом портов и папок:
1 |
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.1-jessie --auth |
Параметры —restart:
unless-stopped — будет останавливаться при перезапуске системы
always — будет автоматически запускаться при старте системы
MongoDB будет запущен на 172.20.0.6:27017
Запуск и остановка
Остановка контейнера:
1 |
docker stop mongodb |
Запуск контейнера:
1 |
docker start mongodb |
Удаление контейнера:
1 |
docker rm mongodb |
Создание базы данных в MongoDB
Подключитесь к mongo client:
1 |
docker exec -it mongodb mongo admin |
Авторизуйтесь в системе:
1 |
db.auth('jsmith', 'some-initial-password'); |
Создайте тестовую базу и коллекцию в ней:
1 2 |
use test db.createCollection('test'); |