MySQL (et des variantes telles que Percona Server) fournit une fonction permettant d'amorcer une base de données au premier démarrage du conteneur décrite dans la section "Initialisation d'une nouvelle instance" dans le page du hub Docker .
Un Dockerfile utilisant cette technique ressemblera à
FROM mysql:8
COPY seed-data.sql /docker-entrypoint-initdb.d/
Remarque :la barre oblique finale du répertoire est importante.
Lorsque vous docker run
cette image, docker créera le conteneur, le docker -entrypoint.sh
exécutera le script sql, puis le conteneur sera prêt à servir les données.
Les données persisteront lors des redémarrages du conteneur - les données de départ et les modifications ultérieures.
Vous pouvez réutiliser le conteneur pour des temps de démarrage plus rapides - les démarrages ultérieurs du conteneur n'auront pas besoin d'initialiser la base de données ou d'amorcer les données.Lorsque vous avez besoin de données vierges, supprimez le conteneur et docker run
l'image à nouveau.
Lorsque vous supprimez le conteneur, n'oubliez pas de supprimer le volume docker contenant les données db :docker rm -v $CONTAINER_NAME
.
J'utilise cette méthode pour fournir des des données standard pour les POC langage/framework ainsi que les CI/CD. L'initialisation d'une nouvelle base de données et l'ensemencement de grandes quantités de données peuvent prendre quelques minutes. Vous aurez donc besoin d'une logique pour suspendre les opérations automatisées jusqu'à ce que vous puissiez établir une connexion à la base de données.
J'espère que cela vous aidera sur votre chemin.