Accueil TechnologiesDocker Les meilleures commandes de Docker – Partie 2
Les meilleures commandes Docker

Les meilleures commandes de Docker – Partie 2

par Jérémy PASTOURET
Publié : Mis à jour le

Vous l’attendiez tous, il est enfin arrivé. Voici mon second article technique sur Docker. Si vous n’avez pas lu le premier, je vous conseille de le parcourir. Autrement il vous manquera les bases pour suivre ce nouveau TP.

Voici le lien de l’article précédent : Les meilleures commandes de Docker – Partie 1

Je pense que ce nouveau TP va vous plaire. L’idée aujourd’hui est de vous faire démarrer un site de type WordPress en moins de 5 min (oui, c’est possible).

Petit rappel de ce qu’est un WordPress :  c’est un système de gestion de contenu communément appelé CMS (de l’anglais Content Management System). En plus WordPress est libre (Open Source). Il permet donc de créer des sites sans écrire une seule ligne de code. D’après une étude réalisée en décembre 2016, WordPress est utilisé par 27% des sites web dans le monde. Impressionnant ? La première version publiée date du 27 mai 2003, et nous sommes aujourd’hui à la version 4.7. La communauté est vraiment active sur ce projet, c’est ce qui est très intéressant. Pour vous donner une petite idée du rendu, voici quelques liens de sites qui tournent sous WordPress :

Sony Music, Panzani, et La Villette sont des sites qui fonctionnent sur ce système. Si vous voulez d’autres exemples, je vous conseille de faire un tour sur ce site : WordPress.org

D’ailleurs, si vous voulez vérifier qu’un site fonctionne bien sous WordPress, voici une petite astuce : vous pouvez rajouter à la fin de chaque lien /wp-admin/. Ainsi, « http://www.panzani.fr/ » devient « http://www.panzani.fr/wp-admin/ » et vous découvrirez le formulaire de connexion basique qui permet d’administrer le site.

Avant de nous lancer dans les commandes Docker, parlons d’abord d’architecture afin d’avoir une petite idée des conteneurs dont on a besoin pour faire tourner un WordPress.

Pour faire fonctionner notre site, on a bien entendu besoin d’une base de données qui va contenir nos pages, nos articles de blog, la liste des utilisateurs, etc. Et pour administrer et voir ce que contient notre base de données, nous avons besoin de PhpMyAdmin.

Pour la base de données, on va partir sur le moteur classique qui se nomme MySQL.

Et là vous devez sûrement vous dire : « Comment aurais-je pu faire si je ne connaissais pas l’architecture de WordPress ? »

En fait c’est simple. Rendez-vous sur le Docker Hub que je vous ai présenté dans mon précédent article, et cherchez « WordPress ». Sinon voici le lien : Repository WordPress. En un clin d’œil sur la page, on voit qu’on a besoin des identifiants et mots de passe d’une base de données MySQL.

Donc maintenant, ‘on sait qu’on doit d’abord installer MySQL. Voyons comment procéder en allant faire un tour sur la page Docker prévu à cette effet : Repository MySQL.

Analysons ensemble la commande Docker que la page nous conseille d’effectuer :

docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag

En regardant cette commande, certains termes vont probablement vous sauter au yeux. On retrouve « some-mysql », qui est le nom de notre futur conteneur et qu’on peut changer si on en a envie. On a aussi « my-secret-pw » : c’est le mot de passe de notre base de données. Il faudra bien penser à le changer. Pour le petit dernier, « tag » : c’est à nous de le choisir parmi une liste bien définie sur la page web, qui correspond à la version de MySql que l’on souhaite utiliser. Voici un petit extrait :

On va choisir la version 8. Deux autres paramètres se trouvent en bas de page : on a MYSQL_DATABASE et MYSQL_USER. Grâce à ces paramètres, on va pouvoir automatiquement créer notre user eainsi qu’une première base de données. Elle est pas belle la vie?

Voici la commande finale :

docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -e MYSQL_DATABASE=wordpress -e MYSQL_USER=root -d mysql:8

Quand on lance la commande, voici ce qu’on obtient : Docker télécharge ce qu’il lui faut pour lancer MySQL

Dès que tout est fini, on vérifie que notre conteneur est bien présent :

On voit que le conteneur some-mysql a bien été créé, et qu’il est toujours actif.

Passons maintenant à PhpMyAdmin qui va nous permettre de créer des tables, ajouter des données, etc.

Donc rebelote, on va faire un tour sur le Docker Hub – dont voici le lien. Dans la documentation, on nous indique la commande suivante :

docker run --name myadmin -d --link mysql_db_server:db -p 8080:80 phpmyadmin/phpmyadmin

Analysons la structure de la fonction. On a le nom « myadmin » qui est modifiable. Puis « mysql_db_server » qui est le terme le plus important de la requête car il permet de lier notre moteur MySQL à PhpMyAdmin. Ensuite rien de spectaculaire pour vous maintenant.

Voici donc la commande finale :

docker run --name myadmin -d --link some-mysql:db -p 8080:80 phpmyadmin/phpmyadmin

Vous avez dû remarquer que j’ai remplacé « mysql_db_server » par « some-mysql« , qui est le nom de mon conteneur comportant MySQL. C’est simplement pour dire  à Docker de lier mon nouveau conteneur à mon moteur de base de données.

Après avoir lancé votre commande, vous pouvez vérifier que tout est bon en lançant simplement un :

docker ps

Le résultat est le suivant, cette commande nous permet d’afficher uniquement les conteneurs actifs :

Maintenant que PhpMyAdmin est actif, on peut vérifier que notre installation fonctionne en ouvrant notre navigateur favori.

Pour connaître l’adresse à saisir dans votre navigateur internet, vous devez ouvrir une console et taper « ifconfig docker0« , ou « ipconfig » pour Windows.

Dans ma capture de console, on remarque sur la deuxième ligne le « addr » suivi d’une adresse IP. C’est celle qui devra être tapée dans le navigateur. A cela, nous devons rajouter le port 8080. Nous l’avons spécifié à Docker lors de l’installation de PhpMyAdmin, afin de ne pas bloquer le port 80 qui est le port traditionnel web et qui sera utilisé par WordPress.

Voici l’URL à taper dans Chrome. Bien sûr, si vous avez une adresse IP différente, changez l’URL :

192.168.99.100:8080

C’est un peu l’épreuve du feu ! Si vous obtenez une jolie page comme celle ci-dessous, c’est que vous avez réussi. Sinon relisez l’article, ou utilisez les commentaires.

Ensuite, saisissez l’utilisateur et le mot de passe spécifiés plus haut lors de l’installation de MySQL pour vous connecter. Pour vous évitez le scroll, je vous affiche à nouveau les paramétrages :

Utilisateur : root
Mot de passe : my-secret-pw

Vous allez obtenir la fenêtre suivante :

Si vous êtes bien attentif, vous avez dû remarquer qu’à gauche on peut voir la liste des bases de données. Notamment la base de données WordPress que l’on a spécifiée lors de l’installation de MySQL.

J’espère que tout fonctionne pour vous et que vous avez hâte de lancer l’installation de WordPress.

Avant de lancer la commande magique, je vous conseille de regarder de nouveau la page WordPress Hub.

La première ligne de commande est la suivante :

docker run --name some-wordpress --link some-mysql:mysql -p 8080:80 -d wordpress

Le première paramètre « –name » est modifiable : il définit le nom de notre futur conteneur. Ensuite on a ‘–link’ qui permet de définir le nom du conteneur comprenant la base de données MySQL . Puis on a le port, qu’il faut changer car notre ami PhpMyAdmin utilise aussi le port 8080. Pour finir, le dernier élément correspond au nom du repository.

On va donc légèrement modifier la ligne de commande :

docker run --name some-wordpress --link some-mysql:mysql -p 80:80 -d wordpress:4.7.1-php7.0-apache

J’ai donc changé le port : j’ai mis le port 80  qui est plus sympa à utiliser. J’ai également rajouté un tag à notre WordPress pour obtenir la dernière version, et surtout utiliser PHP 7 qui est super rapide comparé à PHP5. Voyons maintenant ce que ça donne :

Docker se met donc à télécharger toutes les informations dont il a besoin pour lancer notre conteneur.

A la fin, Docker vous indique que tout a été correctement téléchargé dans une image qui se nomme wordpress:4.7.1-php7.0-apache, et que l’id du conteneur qu’on a lancé se nomme 34d4

Maintenant que tout est prêt, il ne reste plus qu’aller voir la tête de notre beau WordPress. Il faut utiliser la même adresse que pour PhpMyAdmin mais en supprimant le :8080. Voici le résultat :

Ensuite, on se retrouve sur une installation classique de WordPress. Vous choisissez la langue, cliquez sur « suivant », puis créez un utilisateur… et le tour est joué !

Félicitation, vous avez maintenant un beau WordPress et surtout la possibilité de créer un joli site Web.

Pour résumer notre magnifique boulot, voici les commandes pour créer un WordPress tout neuf en 2 lignes :

docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -e MYSQL_DATABASE=wordpress -e MYSQL_USER=root -d mysql:8

docker run --name some-wordpress --link some-mysql:mysql -p 80:80 -d wordpress:4.7.1-php7.0-apache

Impressionnant ce qu’on peut faire en si peu de lignes, non ? Enfin bref, j’espère que ce petit TP bien sympa vous a plu, et que vous arrivez à toucher du doigt la puissance de Docker. Dans le prochain article, je vous montrerai comment créer à la volée plein de WordPress en une seule petite ligne de commande. Vous allez être encore plus impressionnés… Alors revenez régulièrement visiter le blog 😉.

Vous pourriez aussi aimer

8 commentaires

Jean Claude Gourdon 16 juillet 2020 - 18 h 21 min

Bonjour et merci pour ces 3 pages sur les commandes docker. Je commence et ces infos m’ont permi de commencer à comprendre le fonctionnement de docker. Malheureusement, en suivant le tuto, lorsque j’arrive à l’étape d’installation de wordpress, j’ai le message d’erreur suivant: Error response from daemon: could not get container for cyclos-bdd: no such container: cyclos-bdd.
Or cyclos-bdd est le nom que j’ai donné à ma base de données, qui apparaît bien lorsque je lance phpmyadmin.
J’ai tout revérifié, tout est identique aux commandes que vous indiquez, j’ai seulement adapté les noms à ma configuration.
Avez-vous une idée de l’origine de l’erreur? Merci par avance

Répondre
Jérémy PASTOURET 18 juillet 2020 - 15 h 21 min

Bonjour,
Merci pour votre commentaire.
Pour vous aider au mieux, j’ai besoin d’avoir le résultat de votre console pour la commande suivante :
docker ps
Puis j’ai besoin de voir la commande qui renvoie votre erreur.
Avec ces éléments, je pourrais mieux vous aider.

Répondre
Jean Claude Gourdon 27 juillet 2020 - 20 h 39 min

Bonsoir,
Désolé pour le retard apporté à vous répondre, mais j’étais en pleine opération de bascule de mon portable vers mon nouvel ordi de bureau. J’ai donc refais le test en suivant exactement votre tuto, sans rien changer. Tout se passe bien jusqu’au lancement de wordpress. Firefox transforme l’adresse IP en https et me dit que Firefox n’a pas pu établir de connexion de connexion avec le serveur à l’adresse 192.168.1.37.
Malheureusement je ne sais pas comment vous envoyer une copie d’écran. Quand j’essaie par Ctrl C, Ctrl V, il me met l’adresse du fichier et non l’image.

Répondre
Jérémy PASTOURET 28 juillet 2020 - 12 h 16 min

Bonjour,
Changer de PC prend effectivement du temps.
Pour votre problème, il semblerait que ce soit un soucis de paramétrage.
Lorsque vous tentez d’accéder à votre WordPress avec l’adresse IP en HTTP, le site WordPress renvoi une réponse au navigateur lui indiquant de passer en HTTPS.
Sauf que votre serveur n’est pas paramétrer pour recevoir du HTTPS.
Pour réparer votre problème, je vous invite à modifier le fichier wp_config.php qui se trouve dans votre WordPress et d’y ajouter à la fin du fichier les lignes suivantes :
define( 'WP_HOME', 'http://192.168.1.37' );
define( 'WP_SITEURL', 'http://192.168.1.37' );

Ces lignes vont indiquer à votre site qu’il doit être accessible en HTTP non-sécurisé.

Répondre
Jean Claude Gourdon 28 juillet 2020 - 18 h 17 min

Bonjour, tout d’abord, merci pour la rapidité de réponse.
Problème: je ne trouve pas le fichier de configuration de WP. J’ai creusé un peu et j’ai constaté ce que je pense être une anomalie.
Quand je fais un docker ps, je n’ai que phpmyadmin et mysql, pas wordpress. Par contre avec un docker ps -a, je vois bien wordpress mais avec un status exited, comme s’il avait planté. Mais je ne vois pas pourquoi. Je pense que c’est pour ça que je ne trouve pas son fichier de config.
Avez-vous une idée de la cause du problème? Et encore merci pour l’aide apportée.
Cordialement
Jean Claude Gourdon

Répondre
Jérémy PASTOURET 28 juillet 2020 - 18 h 29 min

Bonjour,
C’est un plaisir de pouvoir aider ;-).
Le fait que WordPress ne soit pas actif est une bonne première piste.
Pour savoir ce qu’il lui est arrivé, il suffit de faire :
docker logs some-wordpress
ou
docker logs [id du conteneur]
Si vous pouvez copier-coller les dernières lignes de logs en commentaire.
Sinon votre Docker tourne sur quel système d’exploitation ?
Cordialement,
Jérémy

Répondre
Jean Claude Gourdon 31 juillet 2020 - 8 h 50 min

Bonjour,
J’ai l’impression que vous n’avez jamais reçu les é envois que j’ai faits, en cliquant sur Répondre. Aussi je mets les infos demandées directement dans ce message.
Je tourne sous linux Mint 20.
Pour ce qui concerne WordPress, je n’ai rien dans /var/www/html, ce qui me parait normal du fait que je ne peux pas faire l’installation.
J’ai fait un copier/coller des dernières lignes du fichier log. Il s’agit d’un problème de connexion par mysqli.
Pour info, au début du log, j’ai un message me disant qu’il n’a pas pu trouver /var/www/html et qu’il le copie. Et ensuite plusieurs séquences identiques à celle-ci
Warning: mysqli::__construct(): Server sent charset (255) unknown to the client. Please, report to the developers in – on line 19

Warning: mysqli::__construct(): (HY000/2054): Server sent charset unknown to the client. Please, report to the developers in – on line 19

Warning: mysqli::__construct(): Server sent charset (255) unknown to the client. Please, report to the developers in – on line 19

Warning: mysqli::__construct(): (HY000/2054): Server sent charset unknown to the client. Please, report to the developers in – on line 19

MySQL Connection Error: (2054) Server sent charset unknown to the client. Please, report to the developers
.
Merci d’avance pour votre aide.
Cordialement
Jean Claude Gourdon

Répondre
Jérémy PASTOURET 31 juillet 2020 - 16 h 04 min

Bonjour,
C’est étrange pour vos envois, en plus je ne vois pas de message d’erreurs de mon côté.
Pour votre problème, pouvez-vous copier-coller les commandes que vous utilisez pour lancer MySql et WordPress ?
Sinon, avez-vous essayé la méthode avec docker-compose (présent dans l’article suivant) ?

Répondre

Laisser un commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.