Введение в Mongo для Node в Docker
Приложению нужна база рядом,
а не установка сервера
в систему.
Сервер Mongo поднимают
отдельным сервисом
в том же файле,
где описано приложение
на node:24.
Код Node обращается к базе
по сети проекта,
а не по порту
на компьютере.
Файлы базы держат
в именованном томе
на /data/db,
чтобы новый контейнер
сервера не начинал
с пустого диска.
Пароль и учётная запись
задают переменными окружения
только при первом старте
пустого тома.
Подробности тома,
конфигурации и скриптов
первого запуска
разбирают в учебнике Mongo.
Строка подключения
собирается из имени
сервиса базы,
а не из localhost.
Внутри проекта соседи
видят сервер db
и порт 27017.
Приложение читает адрес
из переменной окружения
и передаёт его драйверу.
Пакет mongodb
ставят в образ приложения
шагом npm install
при сборке.
Сторонний слой вроде Mongoose
здесь не используют:
достаточно официального
драйвера и встроенного
модуля http
для ответа на порту
3000.
Соседний сервер Mongo стартует не мгновенно. Простой порядок запуска лишь сдвигает создание контейнера приложения, а проверка здоровья ждёт ответа базы перед стартом Node. Тогда первый запрос к коллекции не падает из-за ещё не готового сервера.
Уроки раздела идут
от описания сервиса
до подключения скрипта
и ожидания готовности.
Образ сервера - mongo:8.3,
образ приложения - node:24,
учебный пароль - demo
там, где нужна авторизация.
Дамп и восстановление
в этот раздел не входят.