Adios --link
Dans l’article précédent, je t’avais montré comment lancer plusieurs conteneurs pour les lier ensemble et créer un WordPress fonctionnel. Et bien, dans cet article, je vais exactement faire la même chose, mais cette fois-ci, en utilisant une nouvelle méthode, plus simple et plus rapide, appelée Docker Compose.
De l'orchestration
Il faut voir Docker Compose comme un chef d’orchestre. Tu lui donnes une partition (un fichier yml) et il va s’occuper de configurer et lancer tous les conteneurs décrits dans le fichier et rendre le tout cohérent (fonctionnel) via une seule ligne de commande, la classe hein.
Version de la "partition"
Avant d’exécuter la moindre commande, je vais devoir fabriquer cette fameuse partition qui doit respecter des règles précises. Déjà, le fichier doit s’appeler docker-compose.yml, je vais donc commencer par le créer.
La première ligne que doit contenir ce fichier est la version de la partition, si je puis m’exprimer ainsi. Grâce à ce numéro de version, le binaire Docker Compose va savoir comment interpréter la suite. Dans mon cas, je peux choisir du 3.7, mais j’utilise du 3.1 parce que je sais que ça marche et que je n’ai jamais eu besoin de changer ! Si tu veux savoir quelle version tu peux utiliser, il va falloir jeter un p’tit coup d’oeil à la table de compatibilité et comparer avec la version de ton Docker Engine.
Donc au niveau de mon fichier docker-compose.yml, je me retrouve avec ça :
Services et structure de fichier
Ensuite, j’ajoute bêtement le mot services: et puis je vais pouvoir décrire à la ligne les différents services (conteneurs) dont je vais avoir besoin.
Pour cet exemple, je vais bien sûr partir sur un bon vieux WordPress car il nécessite justement deux conteneurs (Apache et MySql) et que j’utilise beaucoup WordPress.
Alors très important, à chaque indentation je dois mettre deux espaces (dans mon cas, une tabulation ne fonctionne pas). Je dois t’avouer que je n’ai pas encore lu la documentation sur la structure des fichiers, mais je sais qu’à un moment donné, j’ai copié un truc du web pour faire des tests et que ça a marché.
Service Wordpress
Si tu as lu l’article juste avant, tu n’auras pas de mal à comprendre, mais je vais quand même mettre des commentaires pour chaque ligne, histoire qu’on reste d’accord.
gol_wordpress: #nom du conteneur
image: wordpress:latest #nom de l'image dans le registry : tag de l'image
restart: always #Specifie si on veut redémarrer le conteneur s'il se ferme
ports: #Pour lister les différents ports, c'est l'équivalent de l'option -p
- 8004:80
environment: #Les variables d'environnement, équivalent au flag -e
WORDPRESS_DB_HOST: gol_db #Ici ce sera le nom de mon conteneur MySQL
WORDPRESS_DB_USER: yann
WORDPRESS_DB_PASSWORD: 123
WORDPRESS_DB_NAME: db-gol-wp
WORDPRESS_TABLE_PREFIX: gol_
volumes: #Pareil c'est pour spécifier les volumes, c'est comme faire un -v
- /Users/golendercaria/Docker/wordpress10sec/SITE:/var/www/html/
Service MySQL
Et la description pour le conteneur MySQL où je dois juste faire le lien avec ce que j’ai mis en haut.
gol_db:
image: mysql:5.7
restart: always
environment:
MYSQL_DATABASE: db-gol-wp
MYSQL_USER: yann
MYSQL_PASSWORD: 123
MYSQL_RANDOM_ROOT_PASSWORD: '1'
ports:
- 33064:3306
volumes:
- /Users/golendercaria/Docker/wordpress10sec/DB/:/var/lib/mysql/
Le fichier docker-compose.yml que je viens d’écrire est disponible sur mon Github (tag learning_wordpress).
Une commande pour les gouverner tous
Il ne me reste plus qu’une chose à faire, lancer la commande docker-compose up dans le même répertoire que mon fichier.
Je vois plein de trucs défiler dans le terminal avec tout ce que Docker est en train de faire. Au bout d’une quinzaine de secondes, quand ça se calme un peu, je vais sur l’URL http://localhost:8004 et je vois que mon WordPress est bien accessible, génial !!!
Avec l’option -d (en mode tâche de fond), j’ai un message qui m’informe lorsque mon application est prête et je peux te dire que c’est vraiment très rapide.
Creating wordpress10sec_gol_db_1 ... done
Creating wordpress10sec_gol_wordpress_1 ... done
Un Wordpress en 30 secondes
Grâce à l’utilisation d’un fichier et d’une seule commande pour tout faire, ça devient un véritable plaisir de lancer une application WordPress. De plus, outre le fait que ça soit facile, c’est aussi rapide. Maintenant, lancer un conteneur WordPress qui tourne et qui fonctionne ne prend pas plus de 30 secondes, et franchement, ça n’augure que des bonnes choses pour la suite de cette découverte.
12/08/2019
Yann Vangampelaere - nouslesdevs -