Maison > Article > base de données > Utiliser MySQL dans un conteneur Docker pour vos projets
Je suis fermement convaincu de la nécessité de garder mon système hôte propre. Et les conteneurs Docker sont la solution parfaite à cela. Disons que vous travaillez sur une application React avec un backend Node/Express et un serveur MySQL pour vos besoins en base de données. En règle générale, vous installez MySQL sur votre système hôte, créez une base de données, créez un utilisateur avec un mot de passe et accordez à l'utilisateur les privilèges nécessaires pour travailler avec cette base de données.
Au lieu de perdre du temps à configurer cela à chaque fois pour chaque projet, j'utilise simplement une image Docker pour créer mon serveur de base de données MySQL, pour qu'il soit prêt, opérationnel en quelques secondes, avec toute la configuration nécessaire. jamais besoin.
Faites-moi confiance, une fois que vous aurez compris votre flux de travail en utilisant cette voie, vous ne reviendrez plus jamais aux anciennes méthodes. Alors, voici comment je m'y prends et de manière très simple et basique.
Si vous avez une certaine expérience avec Docker et souhaitez ignorer ce didacticiel et vous lancer directement dans une version TLDR, cet Gist serait beaucoup plus rapide.
Pour utiliser Docker, nous avons besoin de Docker, duh ! Je n'entrerai pas ici dans les détails de l'installation de Docker. Si vous n'êtes pas à l'aise avec une CLI ou si vous êtes sous Windows/MacOS, optez pour Docker Desktop, il fera tout le gros du travail pour vous en coulisses.
Les utilisateurs de Linux peuvent également installer Docker Engine avec le plugin Docker Compose ou Docker Desktop si vous ne le ressentez pas.
Vous n'avez généralement pas besoin d'un compte sur Docker Hub pour télécharger des images publiques comme l'image officielle MySQL que nous utiliserons.
Il existe deux façons de procéder.
Pour pouvoir exécuter directement le conteneur à l'aide de la commande docker run, vous devrez d'abord avoir téléchargé l'image MySQL sur votre système. Pour extraire l'image sur votre système, utilisez simplement cette commande :
docker pull mysql
Remarque : Si vous n'avez pas besoin d'une version particulière de MySQL, alors cette commande téléchargera la dernière (celle avec la dernière balise). Vous pouvez explorer plus de balises et de versions à partir du Docker Hub si vous en avez besoin.
Une fois le téléchargement de Docker terminé, vous pouvez voir votre image téléchargée comme ceci :
docker image ls
Maintenant, pour exécuter le conteneur, vous devez ajouter de nombreux drapeaux avec la commande docker run. Vous pouvez visiter ce lien pour vérifier toutes les options dont vous disposez. Vous devez également vous souvenir de tous les indicateurs que vous devez ajouter, car en manquer certains pourrait générer des erreurs ou démarrer un conteneur incapable.
De plus, chaque fois que vous souhaiterez exécuter votre conteneur, vous devrez soit récupérer cette longue commande dans l'historique du terminal, soit la retaper. Cela ne sert à rien.
C'est la raison pour laquelle je NE recommande PAS cette approche. Il existe une meilleure façon.
Nous allons créer un fichier Docker Compose qui indiquera à Docker ce dont nous avons besoin lors du lancement du conteneur. Une fois que tout est disposé dans le dossier, le lancement du conteneur devient un jeu d'enfant.
Remarque : vous pouvez créer votre fichier de composition sous n'importe quel nom. Si vous utilisez votre propre nom ou stockez votre fichier de composition dans d'autres dossiers, vous devrez fournir un indicateur -f pour que cela fonctionne. Alternativement, si vous exécutez la commande à partir du même dossier que votre fichier, vous pouvez nommer le fichier docker-compose.yaml.
Un fichier Docker Compose est un fichier YAML. Le nôtre ressemblera à ceci :
# This Docker Compose YAML deploys a MySQL database services: container-name: image: mysql # Official MySQL image from Docker Hub restart: always environment: # Note - Root password is mandatory for the container to run and grant privileges to our User. MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD} MYSQL_DATABASE: ${MYSQL_DATABASE} # Same name as used in your project # DB User Details MYSQL_USER: ${MYSQL_USER} MYSQL_PASSWORD: ${MYSQL_PASSWORD} ports: # Adjust this port as per your needs -> <hostPort>:<containerPort> - 3308:3306 # DB is available at localhost:3308 on the host. volumes: - ./volumes/db-mnt:/var/lib/mysql
Ce fichier est également disponible sur le Gist mentionné au début.
Important à savoir
Vous pouvez soit créer ce fichier dans le même dossier où se trouve votre fichier de composition, soit le créer n'importe où, mais vous devrez fournir le chemin lors de l'appel de docker-compose.
# Content of the Environment Variables file MYSQL_ROOT_PASSWORD=rootpassword MYSQL_DATABASE=nameofdatabase MYSQL_USER=dbusername MYSQL_PASSWORD=dbuserpassword
Une fois que nous avons tout cela en place, nous pouvons simplement utiliser une petite commande et notre base de données sera prête à nous attendre.
docker-compose up -d
Vous êtes maintenant prêt à établir une connexion à la base de données en utilisant votre moyen préféré.
Et puisque nous avons configuré nos conteneurs pour qu'ils s'exécutent à partir d'un fichier de composition, vous pouvez le sauvegarder en toute sécurité dans un système git de votre dépôt. Assurez-vous simplement d'ignorer .git le fichier .env.
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!