Адрес базы в Docker
Адрес базы внутри проекта
строится из имени сервиса,
а не из localhost.
Соседи обращаются к db
на порту 3306,
где слушает MySQL.
Контейнер приложения
читает имя хоста
из окружения
и пока лишь печатает,
без открытия соединения
драйвером.
Сервис db
на mysql:9.7
с паролем root demo.
Сервис web
на node:24
получает переменную
DB_HOST
и коротко выводит её
в консоль:
services:
db:
image: mysql:9.7
environment:
MYSQL_ROOT_PASSWORD: demo
web:
image: node:24
environment:
DB_HOST: db
command: ["node", "-e", "console.log(process.env.DB_HOST)"]
Значение db
- это имя сервиса
в сети Compose,
а порт 3306
зададут в коде
при подключении.
Пакет mysql2
для такой проверки
не обязателен.
Поднимем проект
в фоне:
docker compose up -d
Текст имени хоста читают
в логах сервиса web:
docker compose logs web
Задайте сервису api переменную DB_HOST со значением data и короткий вывод этого значения в консоль на node:24.
Поднимите проект в фоне и зафиксируйте напечатанное имя хоста в логах api.