Dockerfile : configuration transparente de MySQL et importation de données
La configuration de MySQL et l'importation de données pendant les builds Dockerfile peuvent être intimidantes, mais ce n'est pas le cas doit être. Abordons une erreur courante rencontrée par les développeurs utilisant l'extrait de code Dockerfile fourni :
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (111)
La clé pour résoudre ce problème réside dans la compréhension du fonctionnement de l'image officielle MySQL Docker. Dans sa dernière itération, l'image introduit une fonctionnalité qui permet l'importation de données au démarrage. Pour tirer parti de cette fonctionnalité, vous pouvez modifier votre Dockerfile comme suit :
# Mount the data volume for persistent MySQL data storage VOLUME ["/etc/mysql", "/var/lib/mysql"] # Import database dump during Docker image build ADD dump.sql /tmp/dump.sql RUN mysql -u root -e "CREATE DATABASE mydb" RUN mysql -u root mydb < /tmp/dump.sql # Start MySQL daemon CMD ["mysqld"]
En ajoutant la ligne CMD ["mysqld"] à la fin, votre image Docker démarrera automatiquement le démon MySQL lors de la création du conteneur, permettant pour l'importation de données pendant le processus de construction.
Considérations supplémentaires
Si vous désirez la persistance de vos données MySQL même lorsque le conteneur est arrêté ou supprimé, pensez à créer un conteneur de données distinct à l'aide d'un Dockerfile similaire à celui ci-dessous :
FROM n3ziniuka5/ubuntu-oracle-jdk:14.04-JDK8 VOLUME /var/lib/mysql CMD ["true"]
Ce conteneur de données garantit que vos données MySQL sont préservées même lorsque le Le conteneur MySQL principal n'est pas en cours d'exécution.
En résumé, en tirant parti de la fonctionnalité d'importation de données de l'image officielle MySQL Docker et en utilisant un conteneur de données distinct pour la persistance, vous pouvez configurer MySQL et importer des données de manière transparente dans votre Constructions Dockerfile.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!