Maison  >  Article  >  base de données  >  Utiliser MySQL dans un conteneur Docker pour vos projets

Utiliser MySQL dans un conteneur Docker pour vos projets

王林
王林original
2024-08-07 09:06:31510parcourir

Using MySQL in a Docker Container for your Projects

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.

De quoi aurons-nous besoin ?

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.

Très bien, et maintenant ?

Il existe deux façons de procéder.

Utilisation de Docker Run (non recommandé)

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.

Docker Composer

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

  1. Mapping des ports : le premier port est le port hôte (votre système) qui est mappé au deuxième port (le port à l'intérieur du conteneur Docker). Cela signifie que, dans l'exemple ci-dessus, vous pouvez accéder à la base de données à l'adresse localhost:3308. À moins que vous ne sachiez ce que vous faites, conservez le deuxième port comme 3306. Il s'agit du port par défaut pour MySQL.
  2. Volume Bind Mount : nous montons un volume local sur le conteneur pour conserver les données dans la base de données. Cela facilite la sauvegarde et le déplacement si nécessaire. Vous pouvez également laisser Docker gérer son propre volume et créer des sauvegardes périodiques sur votre système hôte. #### Le fichier d'environnement Pour fournir les informations d'identification nécessaires à Docker lors de la création du conteneur, nous allons créer un fichier .env, comme nous le faisons dans nos applications React ou Backend.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn