Mysql
 sql >> Database >  >> RDS >> Mysql

Seeding di un DB MySQL per un'app Django Dockerizzata

MySQL (e varianti come Percona Server) forniscono una funzione per il seeding di un database al primo avvio del container descritto nella sezione "Inizializzazione di una nuova istanza" in pagina hub della finestra mobile .

Un Dockerfile che utilizza questa tecnica sarà simile a

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

Nota:la barra finale della directory è importante.

Quando docker run questa immagine, la finestra mobile creerà il contenitore, la finestra mobile -entrypoint.sh eseguirà lo script sql e quindi il contenitore sarà pronto per servire i dati.

I dati persisteranno durante il riavvio del contenitore:i dati di inizializzazione e le successive modifiche.

Puoi riutilizzare il contenitore per tempi di avvio più rapidi:i successivi avvii del contenitore non dovranno inizializzare il database o eseguire il seeding dei dati. Quando hai bisogno di dati incontaminati, elimina il contenitore ed docker run di nuovo l'immagine.

Quando elimini il contenitore, ricordati di eliminare il volume docker contenente i dati db:docker rm -v $CONTAINER_NAME .

Uso questo metodo per fornire dati standard per POC di linguaggio/quadro e CI/CD. L'inizializzazione di un nuovo database e il seeding di grandi quantità di dati possono richiedere un paio di minuti, quindi vorrai che un po' di logica metta in pausa le operazioni automatizzate finché non riesci a stabilire correttamente una connessione db.

Spero che questo ti aiuti sulla tua strada.