Как использовать MySQL с Docker-Compose

30 gen 2024 3 min di lettura
Как использовать MySQL с Docker-Compose
Indice dei contenuti

Введение

В области разработки программного обеспечения и управления базами данных интеграция MySQL с Docker Compose произвела революцию в способах управления базами данных в контейнерных средах. В этой статье представлено полное руководство по эффективному использованию MySQL с Docker Compose, в котором особое внимание уделяется использованию сценария docker-entrypoint-initdb.d, реализации постоянного хранилища и настройке конфигурации my.cnf.

Зачем использовать MySQL с Docker?

Согласованность: контейнеры Docker гарантируют, что MySQL работает одинаково, независимо от того, где он развернут. Изоляция: каждый экземпляр MySQL работает в своем собственном контейнере, изолированном от хост-системы и других контейнеров. Масштабируемость: легко масштабируйте базы данных MySQL, управляя несколькими контейнерами с помощью Docker Compose.

Шаг 1. Определение файла Docker Compose

Создайте файл docker-compose.yml в каталоге вашего проекта. Этот файл определяет службу MySQL и ее конфигурации.


version: '3.8'

 services:
 db:
 image: mysql:8
 command: --default-authentication-plugin=mysql_native_password
 restart: always
 environment:
 MYSQL_ROOT_PASSWORD: secure_password
 MYSQL_DATABASE: mydb
 MYSQL_USER: myuser
 MYSQL_PASSWORD: password
 ports:
 - "13306:3306"
 volumes:
 - mysql_data:/var/lib/mysql
 -./db/init.sql:/docker-entrypoint-initdb.d/init.sql
 -./db/my.cnf:/etc/mysql/my.cnf

 volumes:
 mysql_data:

Шаг 2. Использование сценария docker-entrypoint-initdb.d

Каталог docker-entrypoint-initdb.d — это особое место в образе MySQL. Скрипты и SQL-файлы, размещенные в этом каталоге, автоматически выполняются при первом запуске контейнера. Эта функция имеет решающее значение для инициализации базы данных с предопределенной схемой или набором данных.

  1. Создайте каталог «initdb» в папке вашего проекта.
  2. Добавьте в этот каталог свои сценарии SQL или сценарии инициализации.
  3. Эти сценарии будут выполняться в алфавитном порядке при первом запуске контейнера.

Шаг 3. Внедрите постоянное хранилище

Постоянное хранилище необходимо для сохранения данных базы данных даже после остановки или удаления контейнера Docker. В файле docker-compose.yml это достигается следующей строкой:

volumes:
 - db_data:/var/lib/mysql

В этой строке указывается именованный том ( db_data ), который обеспечивает постоянство данных. Когда контейнер MySQL останавливается или перезапускается, данные в этом томе остаются нетронутыми.

Шаг 4. Настройка конфигурации my.cnf

С помощью Docker легко настроить конфигурацию MySQL. Чтобы использовать собственный файл my.cnf:

Создайте файл my.cnf в каталоге вашего проекта с вашими пользовательскими конфигурациями.

Подключите этот файл к своему контейнеру, добавив следующую строку в свой сервис в файле docker-compose.yml:

volumes:
 -./my.cnf:/etc/mysql/my.cnf

Эта строка сопоставляет ваш локальный файл my.cnf с файлом внутри контейнера, позволяя вам изменять конфигурации MySQL по мере необходимости.

Шаг 5. Запуск и управление контейнером MySQL

После того, как все настроено, запустите контейнер MySQL с помощью Docker Compose:

docker-compose up -d

Эта команда запускает ваш экземпляр MySQL в автономном режиме. Чтобы остановить контейнер, используйте docker-compose down.

Шаг 6. Подключитесь к серверу MySQL

Чтобы подключиться к базе данных MySQL внутри контейнера Docker с помощью команды docker exec, вам сначала необходимо узнать имя или идентификатор вашего работающего контейнера MySQL. Затем вы можете использовать docker exec для запуска клиента MySQL внутри этого контейнера, что позволяет вам напрямую подключаться к серверу MySQL. Вот как вы можете это сделать:

Список запущенных контейнеров: сначала определите контейнер, на котором работает MySQL. Вы можете перечислить все запущенные контейнеры, используя:

docker ps

Найдите контейнер, в котором работает MySQL (в вашем случае он должен называться примерно так: db или иметь в имени образа mysql).

Подключитесь к контейнеру MySQL. Используйте docker exec, чтобы запустить сеанс клиента MySQL внутри контейнера. Формат команды:

docker exec -it [container_name_or_id] mysql -u[username] -p

Для вашей настройки, если имя вашего контейнера — db и вы хотите подключиться от имени пользователя root, команда будет такой:

docker exec -it db mysql -uroot -p

Вам будет предложено ввести пароль. Для пользователя root, согласно вашему файлу docker-compose.yml, это secure_password.

Взаимодействие с MySQL: после входа в систему вы можете запускать любую команду MySQL для управления базами данных, таблицами и данными.

Заключение

Интеграция MySQL с Docker Compose обеспечивает упрощенный подход к управлению реляционными базами данных в контейнерной среде. Используя сценарий docker-entrypoint-initdb.d, реализуя постоянное хранилище и настраивая файл my.cnf, вы можете легко и точно эффективно управлять и масштабировать свои базы данных MySQL. Эта настройка не только упрощает рабочие процессы разработки, но также улучшает переносимость и масштабируемость ваших приложений.

Buy me a coffeeBuy me a coffee

Supportaci se ti piacciono i nostri contenuti. Grazie.

Successivamente, completa il checkout per l'accesso completo a Noviello.it.
Bentornato! Accesso eseguito correttamente.
Ti sei abbonato con successo a Noviello.it.
Successo! Il tuo account è completamente attivato, ora hai accesso a tutti i contenuti.
Operazione riuscita. Le tue informazioni di fatturazione sono state aggiornate.
La tua fatturazione non è stata aggiornata.