Можете да използвате както docker, така и docker-compose. Например с docker compose.
Създайте файл, наречен docker-compose.yml, като:
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"
Освен това имате нужда от файл под ./data
с каквито и SQL команди, които искате да изпълните, и и .env
файл, където дефинирате променливите на околната среда, които използвах в docker-compose.yml
файл по-горе като:${DATABASE}
Вашият .env
файл:
# MySQL
DATABASE=db_name_here
ROOT_USER=root
ROOT_PASSWORD=root
USER=dev
PASSWORD=dev
Вашият файл с SQL команди за изпълнение на ./data/init.sql
(можете да наименувате файла както искате)
CREATE DATABASE 'whatever';
DROP DATABASE 'whatever';
-- you can do whatever you want here
Този файл ще се изпълнява всеки път, когато направите:
docker-compose up -d db