MongoDB в Docker Compose: локальная база без установки в систему

Почему 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

Если вы собираете тему по шагам, рядом лучше открыть:

Оцените статью
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x