Możesz użyć zarówno docker, jak i docker-compose. Na przykład za pomocą docker compose.
Utwórz plik o nazwie docker-compose.yml, taki jak:
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"
Dodatkowo potrzebujesz pliku pod ./data
z dowolnymi poleceniami SQL, które chcesz uruchomić i i .env
plik, w którym definiujesz zmienne środowiskowe, których użyłem w docker-compose.yml
plik powyżej, taki jak:${DATABASE}
Twój .env
plik:
# MySQL
DATABASE=db_name_here
ROOT_USER=root
ROOT_PASSWORD=root
USER=dev
PASSWORD=dev
Twój plik z poleceniami SQL do wykonania ./data/init.sql
(możesz nazwać plik, jak chcesz)
CREATE DATABASE 'whatever';
DROP DATABASE 'whatever';
-- you can do whatever you want here
Ten plik będzie wykonywany za każdym razem, gdy to zrobisz:
docker-compose up -d db