Você pode usar o docker e o docker-compose. Por exemplo, com docker compose.
Crie um arquivo chamado docker-compose.yml como:
version: '3'
services:
db:
image: percona:5.7
container_name: whatever_you_want
environment:
- MYSQL_DATABASE=${DATABASE}
- MYSQL_ROOT_PASSWORD=${ROOT_PASSWORD}
- MYSQL_USER=${USER}
- MYSQL_PASSWORD=${PASSWORD}
volumes:
- ./data:/docker-entrypoint-initdb.d
ports:
- "3306:3306"
Além disso, você precisa de um arquivo em
./data
com quaisquer comandos SQL que você deseja executar e .env
arquivo onde você define as variáveis ambientais que usei no docker-compose.yml
arquivo acima como:${DATABASE}
Seu
.env
Arquivo:# MySQL
DATABASE=db_name_here
ROOT_USER=root
ROOT_PASSWORD=root
USER=dev
PASSWORD=dev
Seu arquivo com comandos SQL para executar
./data/init.sql
(você pode nomear o arquivo como quiser) CREATE DATABASE 'whatever';
DROP DATABASE 'whatever';
-- you can do whatever you want here
Este arquivo será executado toda vez que você fizer:
docker-compose up -d db