Docker-MySQL

drawing

Introduction

  • MySQL

    • est un système de gestion de base de données relationnelle
    • est open source et gratuit
    • est idéal pour les petites et les grandes applications
    • est très rapide, fiable, évolutif et facile à utiliser
    • est multiplateforme et conforme à la norme ANSI SQL
    • a été publié pour la première fois en 1995
    • est développé, distribué et pris en charge par Oracle Corporation
    • porte le nom de la fille du co-fondateur Monty Widenius : My
  • Fonctionnement

    Docker-compose

    Pour faire tourner une database MySQL dans un conteneur la création d'un docker-compose.yml est nécessaire ou l'utilisation d'un docker run.

    drawing

    Hummm, comment le faire???

    Ahhh, mais c'est simple, créer un fichier "docker compose.yml " dans votre folder et mettez ceci dedans.

    version: "3.9"
    services:
      mysql:
        image: mysql:5.7.36
        hostname: db-mysql
        container_name: db-mysql
        #replace environment section
        environment:
          #celui-ci est le seul obligatoire
          - MYSQL_ROOT_PASSWORD: root_assword
          - MYSQL_USER: mon_user
          - MYSQL_PASSWORD: user_password
          - MYSQL_DATABASE: database_name
        #expose le port de MySQL sinon il ne sera pas vu par la machine on appelle ceci le biding
        ports:
          - 3306:3306
    

    Ainsi, en ligne de commande accéder à MySQL en tapant:

      docker exec -it db-mysql bash
    

    Ne vous découragerez pas je vous explique

    • Le "docker exec" exécute une commande dans un conteneur en cours d'exécution.
    • Le "-it" signifie fais le en mode interactive
    • Le "db-mysql" est nom du conteneur
    • Le "bash" à la fin signifie qu'on veut exécuter "db-mysql" en mode bash

    Sachez que le "docker-compose" manipule les services, mais que docker lui seul manipule les containers.

    Mais, perso, j'ai choisi d'installer sur vscode l'extension database qui me permet de me connecter et de manipuler MySQL avec une jolie interface plus d'info sur l'extension database.

    drawing

    Database extension après connexion à la base mysql

    No kidding 😂 !! je ne me suis pas arretée là.

    J'ai donc rajouté une interface web en utilisant adminer. Documentation juste 👉 ici.
    Sinon voici un exemple de docker-compose avec adminer comme service.

    adminer:
      depends_on:
        - mysql
      image: adminer
      restart: always
      ports:
        - 8080:8080
    

    NB: on rajoute "depends*on:" car on veut qu'il attende que MySQL finisse de démarrer avant de se lancer.
    Vous trouverez plus d'info sur docker hub.

    Docker run

    Alors j'aime bien le docker-compose, car ça nous évite de rappeler nos commandes ou bien de recopier tout le temps la commande. C'est aussi un moyen rapide de faire des modifications.

    Mais ce n'est pas la seule méthode à utiliser pour initialiser un container MySQL, il y a la simple commande docker run

    docker run --name=container_name  --restart on-failure -d image_name:tag
    

    En remplaçant les lettres par leurs valeurs, on obtient un truc pareil :

    docker run -itd --name db-mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root_assword -e MYSQL_USER=mon_user -e   MYSQL_PASSWORD=user_password -e MYSQL_DATABASE=database_name  mysql:5.7.36
    

    Variables d'environnement

    On ne va surtout pas tous les voir ici, mais je vous invite à régarder ici où vous en trouverez beaucoup. Alors ceux qu'on a utilisés sont assez clairs, mais pour juste un peu parler, je dirais que chaque serve ou base de données bref chaque image docker peut contenir des variables d'environnements. On peut donc trouver dans le docker hub de l'image ou bien sur le site officiel de la techno quel environnement on en a besoin.
    On le spécifie dans docker run avec " -e, --env, --env-file " et dans un docker-compose par "environment"

    Exemple de dokcer run:
     docker run -e MYVAR1 --env MYVAR2=foo --env-file ./env.list ubuntu bash
    
    
    Exemple de dokcer-compose:
    environment:
      - MYSQL_ROOT_PASSWORD: root_assword
      - MYSQL_USER: mon_user
      - MYSQL_PASSWORD: user_password
      - MYSQL_DATABASE: database_name
    
    

    Conclusion

    Nous arrivons à la fin de notre tuto happy!!😁, je vous invite donc de voir ce article sur docker-compose.
    Car, ceci n'est qu'une introduction au MySQL en utilisant les containers, pour plus d'informations visitez le site docker-hub ou sur le site de MySQL www.mysql.com .