sql >> Databasteknik >  >> RDS >> Mysql

Sådd en MySQL DB för en dockeriserad Django-app

MySQL (och varianter som Percona Server) tillhandahåller en möjlighet att se en databas vid första containerstart som beskrivs i avsnittet "Initiera en ny instans" i docker hub-sida .

En Dockerfil som använder denna teknik kommer att se ut

FROM mysql:8
COPY seed-data.sql /docker-entrypoint-initdb.d/

Obs:katalogens bakre snedstreck är viktigt.

När du docker run denna bild kommer docker att skapa behållaren, entdocker. -entrypoint.sh kommer att köra sql-skriptet och sedan är behållaren redo att servera data.

Data kommer att finnas kvar genom omstarter av behållare - frödata och efterföljande ändringar.

Du kan återanvända behållaren för snabbare starttider - efterföljande behållarestarter behöver inte initiera databasen eller seed data. När du behöver orörda data, ta bort behållaren och docker run bilden igen.

När du tar bort behållaren, kom ihåg att ta bort docker-volymen som innehåller db-data:docker rm -v $CONTAINER_NAME .

Jag använder den här metoden för att tillhandahålla standarddata för språk/ramverk POC samt CI/CD. Att initiera en ny databas och sådd stora mängder data kan ta ett par minuter så du vill ha lite logik för att pausa automatiska operationer tills du lyckas skapa en db-anslutning.

Hoppas detta hjälper dig på vägen.




  1. uppdatera databas med kryssruta

  2. Hur kan jag ställa in en anslutningssträng för SQL Server?

  3. MySQL - Trigger för uppdatering av samma tabell efter infogning

  4. SQLite CHECK-begränsningar