Для прокидывания подключения MySQL и Node.js в одном Docker Compose, вам потребуется создать два сервиса - один для базы данных MySQL и второй для вашего приложения Node.js.
Вот пример вашего docker-compose.yml файла:
version: '3' services: mysql: image: mysql environment: MYSQL_ROOT_PASSWORD: your_root_password MYSQL_DATABASE: your_database_name MYSQL_USER: your_mysql_user MYSQL_PASSWORD: your_mysql_password ports: - 3306:3306 nodejs: build: context: . dockerfile: Dockerfile depends_on: - mysql ports: - 3000:3000 environment: MYSQL_HOST: mysql MYSQL_PORT: 3306 MYSQL_USER: your_mysql_user MYSQL_PASSWORD: your_mysql_password MYSQL_DATABASE: your_database_name
В сервисе MySQL мы используем официальный Docker образ MySQL и задаем переменные окружения, такие как пароль для root пользователя, имя базы данных, имя пользователя и пароль для пользователя MySQL. Мы также пробрасываем порт 3306, чтобы можно было подключиться к базе данных извне контейнера.
В сервисе Node.js мы использовали сборку образа, используя Dockerfile, который находится в том же каталоге, что и файл docker-compose.yml. Мы также указали зависимость от сервиса MySQL, чтобы убедиться, что он запустится перед контейнером Node.js.
Мы пробрасываем порт 3000, чтобы можно было получить доступ к вашему приложению Node.js извне контейнера. Также мы задаем переменные окружения для подключения к базе данных MySQL. Обратите внимание, что переменные окружения MYSQL_HOST и MYSQL_PORT должны быть аналогичными значениям, указанным в сервисе MySQL.
После создания файла docker-compose.yml, вы можете запустить контейнеры, выполнив следующую команду в терминале:
docker-compose up
Это запустит и сконфигурирует все сервисы, указанные в файле docker-compose.yml.
Теперь вы можете подключиться к вашему приложению Node.js на порту 3000 и использовать подключение к MySQL, указав хост mysql
, порт 3306
и соответствующие значения для имени пользователя, пароля и базы данных, как указано в переменных окружения в файле docker-compose.yml.
Надеюсь, это поможет вам развернуть ваше приложение Node.js с подключением к MySQL с использованием Docker и Docker Compose.