MySQL (a varianty jako Percona Server) poskytují zařízení pro nasazování databáze při prvním spuštění kontejneru popsané v části „Inicializace nové instance“ v stránka centra dockeru .
Dockerfile využívající tuto techniku bude vypadat takto
FROM mysql:8
COPY seed-data.sql /docker-entrypoint-initdb.d/
Poznámka:lomítko na konci adresáře je důležité.
Když docker run
tento obrázek vytvoří docker kontejner, -entrypoint.sh
spustí skript SQL a kontejner bude připraven k poskytování dat.
Data zůstanou zachována i po restartování kontejneru – počáteční data a následné úpravy.
Kontejner můžete znovu použít pro rychlejší spouštění – následné spuštění kontejneru nebude muset inicializovat databázi nebo osídlit data. Až budete potřebovat nedotčená data, smažte kontejner a docker run
obrázek znovu.
Když smažete kontejner, nezapomeňte smazat svazek dockeru obsahující data db:docker rm -v $CONTAINER_NAME
.
Tuto metodu používám k poskytování standardních dat pro jazykové/rámcové POC i CI/CD. Inicializace nové databáze a seedování velkého množství dat může trvat několik minut, takže budete chtít nějakou logiku pro pozastavení automatických operací, dokud se vám nepodaří úspěšně vytvořit připojení k databázi.
Doufám, že vám to pomůže na vaší cestě.