Чтобы запустить MySQL в среде Docker Compose, вы можете использовать следующие методы с примерами кода:
Метод 1: использование официального образа MySQL
Вы можете использовать официальный образ MySQL Docker из Docker Hub. Вот пример базового файла docker-compose.yml:
version: '3'
services:
db:
image: mysql:latest
restart: always
environment:
MYSQL_ROOT_PASSWORD: your_root_password
MYSQL_DATABASE: your_database_name
MYSQL_USER: your_username
MYSQL_PASSWORD: your_password
volumes:
- ./data:/var/lib/mysql
В этом примере сервис dbопределяется с помощью образа mysql. Вы можете настроить переменные среды, чтобы установить пароль root, имя базы данных, имя пользователя и пароль. Раздел volumesподключает локальный каталог (./data) к каталогу данных контейнера MySQL.
Метод 2: использование пользовательской конфигурации MySQL
Если вам нужно использовать собственный файл конфигурации MySQL, вы можете создать Dockerfile и создать собственный образ. Вот пример:
- Создайте
Dockerfile
FROM mysql:latest
COPY custom.cnf /etc/mysql/conf.d/
-
Создайте файл
custom.cnfс вашей собственной конфигурацией MySQL. -
Создайте файл
docker-compose.yml:
version: '3'
services:
db:
build:
context: .
dockerfile: Dockerfile
restart: always
environment:
MYSQL_ROOT_PASSWORD: your_root_password
MYSQL_DATABASE: your_database_name
MYSQL_USER: your_username
MYSQL_PASSWORD: your_password
volumes:
- ./data:/var/lib/mysql
В этом методе раздел buildв файле docker-compose.ymlуказывает контекст сборки и расположение файла Dockerfile.
Метод 3: использование внешних сценариев инициализации
Если вам нужно выполнить сценарии инициализации после запуска контейнера MySQL, вы можете смонтировать каталог, содержащий сценарии. Вот пример:
version: '3'
services:
db:
image: mysql:latest
restart: always
environment:
MYSQL_ROOT_PASSWORD: your_root_password
MYSQL_DATABASE: your_database_name
MYSQL_USER: your_username
MYSQL_PASSWORD: your_password
volumes:
- ./data:/var/lib/mysql
- ./init-scripts:/docker-entrypoint-initdb.d
В этом примере каталог init-scriptsсодержит сценарии SQL, которые будут выполняться во время процесса инициализации контейнера.