Docker Compose : Créer une stack wordpress

Docker Compose : Créer une stack wordpress

24 décembre 2019 0 Par Mairien Anthony

Aujourd’hui nous allons voir comment déployer rapidement et simplement un site WordPress via Docker Compose.

Docker Compose est un orchestrateur de conteneurs permettant de créer divers conteneurs au travers de fichiers YAML pour les démarrer ensuite en tant que services. Voici un cas concret et qui est très facile à mettre en place, rien de tel pour débuter donc !

Nous souhaitons utiliser Docker pour héberger notre site web sous WordPress, pour cela il nous suffit donc d’installer Docker Compose, de créer un fichier docker-compose.yml puis d’y décrire la création de deux conteneurs, un conteneur hébergeant la base de données MySQL et l’autre hébergeant le CMS WordPress.

I) Installation de Docker Compose

Pour cela, rien de plus facile. Si vous avez installé Docker for Windows ou Docker for Mac, vous devriez l’avoir de base, et si vous êtes sous GNU/Linux, il suffit d’exécuter la commande suivante :

sudo curl -L "https://github.com/docker/compose/releases/download/1.23.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/bin/docker-compose && sudo chmod +x /usr/bin/docker-compose

Une fois fait, on peut vérifier que ce dernier est bien installé au travers de la commande docker-compose –version :

C’est tout bon ! On poursuit !

II) Commandes de base

Avant de se lancer directement dans le bain, il convient de connaître quelques commandes de base. Si vous êtes déjà habitué à Docker, vous verrez que certaines commandes se ressemblent fortement.

  • docker-compose up -d, permettant d’exécuter le fichier docker-compose.yml présent dans le répertoire dans lequel on se trouve, et de démarrer les services en arrière-plan ;
  • docker-compose ps, permettant de lister les conteneurs actifs ou éteints ;
  • docker-compose rm, permettant de supprimer des conteneurs
    éteints ;
  • docker-compose stop, permettant de stopper tous les services d’une stack ;
  • docker-compose config, permettant de vérifier un fichier docker-compose.yml ;

Il y a bien entendu d’autres commandes, mais celles-ci constituent la « base », et vous permettent de bien comprendre la syntaxe qui est encore une fois fort ressemblante à celle de Docker.

III) Création du fichier docker-compose.yml

Bien, on peut donc commencer ! Ici nous serons assez brefs car il n’y a rien de très compliqué, mais je vais tout de même détailler chaque partie du fichier :

  • On commence par définir la version utilisée, ici version: ‘3’ ;
  • Ensuite on définit nos différents services, ici il y en aura deux (database et wordpress) ;
  • Ensuite on décrit donc notre premier service, qui sera basé sur l’image mysql en versions 5.7. Celui-ci aura un volume rattaché (car pour rappel, à l’arrêt d’un conteneur, rien n’est sauvegardé) nommé database_data et pointant dans le dossier /var/lib/mysql. On lui donne le paramètre restart: always permettant comme son nom l’indique de redémarrer automatique le conteneur si celui-ci venait à s’arrêter pour une raison X ou Y. Ensuite, nous renseignons des variables d’environnement propres à notre image MySQL, à savoir le mot de passe root pour MySQL, le nom de notre base de données, notre utilisateur et son mot de passe ;
  • Puis nous passons à notre second service, wordpress. Le premier paramètre est depends_on: -database, permettant de dire à Docker de d’abord démarrer le service database avant de démarrer notre WordPress, et ainsi créer une relation de dépendance ;
  • Ensuite on choisit l’image sur laquelle notre conteneur sera basé, ici ce sera un wordpress en version latest ;
  • On choisit d’exposer le port 80 de wordpress au travers du port 8080 de notre hôte ;
  • Puis on rajoute le fameux restart: always ;
  • Et enfin, comme pour le service database on rajoute certaines valeurs d’environnement propres à WordPress (l’adresse de la base de données, qui sera donc database:3306, puis le user, password, et le nom de la base de données) ;
  • Et enfin, le dernier paramètre sert simplement à déclarer notre volume database_data ;

Rien de très compliqué n’est-ce pas ? 😉

On peut vérifier si notre syntaxe est correcte via la commande suivante :

docker-compose config

Aucune erreur, donc tout roule ! On peut exécuter notre fichier et voir notre stack démarrer !

docker-compose up -d

Tadaaaa ! Notre site est bien fonctionnel ! Et étant donné que notre service MySQL est relié à un volume, nous pouvons stopper notre stack et la redémarrer plus tard sans perdre aucune donnée !

Ceci conclut donc cet article sur la prise en main de Docker Compose au travers d’un exemple concret et facile d’accès. Je ferai sûrement d’autres articles traitant de Docker & cie en allant un peu plus en profondeur.