- Почему Docker удобен для MongoDB
- Что получится в конце
- Минимальный compose-файл
- Запускаем MongoDB
- Подключаемся через Compass
- Почему нужен volume
- Вариант с логином и паролем
- Частые ошибки
- Порт 27017 занят
- Данные пропали
- Compass не подключается
- Когда Docker лучше локальной установки
- Ответы на эти вопросы могут быть для вас полезными
- Docker Compose подходит новичку?
- Можно ли использовать такой compose в продакшене?
- Почему образ mongo:7, а не latest?
- Где хранятся данные?
- Следующий шаг
- Что почитать дальше по MongoDB
Почему Docker удобен для MongoDB
Локальная установка базы — нормальный путь, но не всегда самый удобный. Если ты часто создаешь тестовые проекты, Docker позволяет поднять MongoDB одной командой, не засоряя систему сервисами
Сценарий простой: в папке проекта лежит docker-compose.yml, в нем описана MongoDB. Запускаешь compose — база работает. Останавливаешь — база не мешает. Удаляешь проект — окружение можно убрать вместе с ним
Что получится в конце
Ты получишь:
- файл
docker-compose.yml; - контейнер MongoDB;
- volume для сохранения данных;
- подключение через
mongodb://localhost:27017; - проверку через Compass.
Минимальный compose-файл
Создай папку проекта и файл docker-compose.yml:
services:
mongo:
image: mongo:7
container_name: mongo_demo
ports:
- "27017:27017"
volumes:
- mongo_data:/data/db
volumes:
mongo_data:
Здесь:
image: mongo:7— образ MongoDB;ports— пробрасываем порт на локальную машину;volumes— сохраняем данные не внутри временного контейнера, а в volume.
Запускаем MongoDB
В папке с compose-файлом:
docker compose up -d
Проверяем:
docker compose ps
Если контейнер запущен, MongoDB должна отвечать на:
mongodb://localhost:27017
Подключаемся через Compass
Открой MongoDB Compass и вставь:
mongodb://localhost:27017
Если подключение работает, создай базу:
crm_demo
и коллекцию:
leads
Добавь тестовый документ:
{
"name": "Docker Test",
"source": "local",
"status": "new"
}
Почему нужен volume
Если убрать volume, данные могут исчезнуть при пересоздании контейнера. Для учебного одноразового теста это не страшно. Но для проекта, где ты хочешь сохранить заявки, настройки или тестовую базу, volume нужен
Остановить контейнер:
docker compose down
Остановить и удалить volume:
docker compose down -v
Команда с -v удалит данные. Используй ее только когда точно хочешь очистить базу
Вариант с логином и паролем
Для учебного локального старта можно обойтись без пароля, если база доступна только на твоей машине. Но для более аккуратного окружения можно добавить:
services:
mongo:
image: mongo:7
container_name: mongo_demo
ports:
- "27017:27017"
environment:
MONGO_INITDB_ROOT_USERNAME: admin
MONGO_INITDB_ROOT_PASSWORD: example
volumes:
- mongo_data:/data/db
volumes:
mongo_data:
Строка подключения тогда будет другой:
mongodb://admin:example@localhost:27017
В реальном проекте пароль example использовать нельзя. Это только учебный пример
Частые ошибки
Порт 27017 занят
Если локальная MongoDB уже установлена, порт может быть занят. Можно поменять внешний порт:
ports:
- "27018:27017"
Тогда подключение:
mongodb://localhost:27018
Данные пропали
Проверь, не запускал ли ты:
docker compose down -v
Эта команда удаляет volume
Compass не подключается
Проверь, что контейнер запущен:
docker compose ps
И что ты используешь правильный порт
Когда Docker лучше локальной установки
Docker удобен, если:
- у проекта должно быть воспроизводимое окружение;
- ты работаешь с несколькими версиями баз;
- не хочешь ставить MongoDB сервисом в систему;
- хочешь быстро очистить и пересоздать тестовую базу.
Локальная установка проще, если Docker не установлен и ты только делаешь первые шаги
Ответы на эти вопросы могут быть для вас полезными
Docker Compose подходит новичку?
Да, если Docker уже установлен. Но если Docker сам по себе пока непонятен, можно начать с MongoDB Compass и локальной установки
Можно ли использовать такой compose в продакшене?
Этот пример учебный. Для продакшена нужны пароли, сеть, бэкапы, мониторинг и нормальная инфраструктура
Почему образ mongo:7, а не latest?
Фиксированная версия предсказуемее. latest может измениться и принести неожиданные отличия
Где хранятся данные?
В Docker volume mongo_data, который подключен к /data/db внутри контейнера
Следующий шаг
Добавь в compose второй сервис api на Node.js и подключи его к MongoDB. Так получится локальное окружение для полноценного мини-проекта
Что почитать дальше по MongoDB
Если вы собираете тему по шагам, рядом лучше открыть:
- Как установить MongoDB Community Server и проверить, что база работает — понять разницу между локальной установкой и контейнером.
- Как перезапустить MongoDB и проверить статус — перезапустить контейнер и проверить доступность базы.
- Failed to start MongoDB database server: что проверить — быстро пройти диагностику, если контейнер не стартует.
- Node.js + MongoDB: мини-проект с заявками — подключить контейнерную MongoDB к Node.js-приложению.



