Введение в MySQL для Node в Docker
Приложению нужна база рядом,
а не установка сервера
в систему.
Сервер MySQL поднимают
отдельным сервисом
в том же файле,
где описано приложение
на node:24.
Код Node обращается к базе
по сети проекта,
а не по порту
на компьютере.
Файлы базы держат
в именованном томе
на /var/lib/mysql,
чтобы новый контейнер
сервера не начинал
с пустого диска.
Пароль root, база приложения
и отдельный пользователь
задают переменными окружения
только при первом старте
пустого тома.
Подробности тома,
конфигурации и скриптов
первого запуска
разбирают в учебнике MySQL.
Имя хоста внутри проекта
совпадает с именем
сервиса базы,
а не с localhost.
Соседи видят сервер db
и порт 3306.
Приложение читает адрес
из переменной окружения
и передаёт его драйверу.
Пакет mysql2
ставят в образ приложения
шагом npm install
при сборке.
Пакет mysql
и слой ORM здесь не используют:
достаточно mysql2
и встроенного модуля http
для ответа на порту
3000.
Скрипт выполняет запрос к таблице и отдаёт строку в теле ответа. Соседний сервер MySQL стартует не мгновенно. Простой порядок запуска лишь сдвигает создание контейнера приложения, а проверка здоровья ждёт ответа базы перед стартом Node.
Уроки раздела идут
от описания сервиса
до запроса из скрипта
и ожидания готовности.
Образ сервера - mysql:9.7,
образ приложения - node:24,
учебный пароль - demo,
база и пользователь - app
там, где нужна авторизация.
Дамп и восстановление
в этот раздел не входят.