ENI Service - WordPress - Annexe : Environnement Dockerisé avec une WSL personnalisée, sous Windows

Le projet est (presque) entièrement conteneurisé avec la technologie open source Docker. Aussi, il suffit d’installer Docker Desktop pour faire de votre machine une plateforme Docker et l’utiliser.

La technologie de conteneurisation LXC implémentée par Docker nécessite un noyau Linux. Sur GNU/Linux, l’usage de Docker est donc natif, les conteneurs sont executés directement sur le noyau de la machine hôte. Sous Windows (et sous macOS), il faut donc installer une machine virtuelle GNU/Linux.

Sur Windows, Docker Desktop utilise Windows Subsystem for Linux (WSL 2), une machine intégrée native de distribution GNU/Linux sur Windows !

Une fois installée, cette distribution est accessible comme n’importe quelle application. Aujourd’hui sous Windows, on peut travailler sous GNU/Linux très facilement, ce qui est une excellente chose !

Docker Desktop et la WSL

Normalement, Docker Desktop installe sa propre machine virtuelle sans vous demander quoi que ce soit. Il faut seulement que la WSL soit activée et mise à jour :

wsl --update

En soi, on pourrait s’arrêter là. Mais on souhaiterait travailler sous GNU/Linux, pas seulement lancer les conteneurs.

En effet, le projet est configuré pour tirer parti de fonctionnalités de Linux notamment pour les droits en lecture et écriture de fichiers, et éviter de lancer le projet en mode administrateur (avec sudo). Docker a besoin des droits administrateur pour lancer les conteneurs (c’est son vilain défaut, contrairement à Podman par exemple, une autre technologie de conteneurisation). Travailler sous le compte administrateur vient avec ses désagréments. Par exemple, dans notre cas, certains fichiers et répertoires de notre projet WordPress lui appartiendraient, et vous ne pourriez pas (facilement) les éditer, etc.

Pour être plus heureux, et éviter tous ces désagréments, nous allons donc travailler depuis la WSL afin d’avoir un environnement de travail idéal.

Et, c’est intéressant de mettre la main sur GNU/Linux. Il y aura très peu de choses à faire. Une fois configurée, vous pourrez accéder au système de fichiers de votre distribution depuis l’explorateur de fichiers Windows (/home/), et utiliser vos outils préférés comme si vous étiez sous Windows.

Pourquoi installer notre propre distribution GNU/Linux ?

On pourrait utiliser la distribution WSL installée par Docker Desktop, mais elle n’est pas faite pour servir d’environnement de travail principal :

Aussi, on la laisse à Docker Desktop et on installe la nôtre. Elle servira à la fois pour nos conteneurs ET pour travailler.

Le programme

Installation de Docker Desktop

Installer Docker Desktop. Paquet logiciel tout en un, publié par Docker Hub. Installe Docker, Compose et un outil d’administration avec interface graphique (et bien d’autres choses).

C’est le moyen le plus simple d’installer Docker sur Windows.

Installation de VOTRE distribution

Pour installer une nouvelle distribution GNU/Linux, rien de plus simple. Dans une invite de commandes Windows :

wsl --install

Par défaut, WSL installe une distribution Ubuntu, ce qui est très bien. Vous pouvez changer et opter pour une autre distribution (Debian, etc.). Consulter la liste des distributions disponibles :

wsl --list --online

Une fois votre choix fait :

wsl --install [Nom de la distribution choisie]

Lister les distributions installées :

wsl -l -v

La distribution que vous venez d’installer doit apparaître dans la liste.

Premier lancement et configuration de GNU/Linux

Création des comptes admin et utilisateur

Dans la suite, on supposera que vous avez installé une distribution Ubuntu (ou Debian).

  1. Lancez la distribution (application Ubuntu accessible comme une application). Un shell va s’ouvrir;
  2. Suivre les instructions :

WSL va vous ouvrir un shell (Bash) sur votre instance GNU/Linux. Félicitations, vous êtes sous GNU/Linux !

Mise à jour du système

Exécuter les commandes suivantes pour mettre à jour votre installation :

sudo apt update
sudo apt upgrade

apt est le gestionnaire de paquets sous Ubuntu/Debian. C’est avec lui qu’on installe des logiciels et applications sur la machine.

Installer Docker (optionnel)

sudo apt install docker

Tester :

docker -v

Pas utile en soi, car lorsque l’on dira à Docker Desktop d’utiliser notre distribution (WSL integration), docker sera automatiquement installé sur la WSL.

Ajouter votre utilisateur au groupe docker

Pour que votre utilisateur puisse se servir de Docker sans nécessiter des droits administrateur, il faut l’ajouter au groupe docker :

sudo groupadd docker
sudo usermod -aG docker $USER

Vérifier que vous faites bien parti du groupe docker :

groups

docker doit apparaître dans la liste. Si ce n’est pas le cas, redémarrez la WSL pour que les changements soient pris en compte !

Voir la documentation sur cette étape

Installer PHP

Installer PHP et quelques extensions :

sudo apt install php8.4 php8.4-xml php8.4-zip

Adapter à la dernière version PHP disponible sur les dépôt de Debian.

Vérifier que PHP est bien installé :

php -v

Installer Composer

On va utiliser Composer, le gestionnaire de dépendances de PHP. L’installer en copiant/collant ces instructions dans le shell :

php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php -r "if (hash_file('sha384', 'composer-setup.php') === 'c8b085408188070d5f52bcfe4ecfbee5f727afa458b2573b8eaaf77b3419b0bf2768dc67c86944da1544f06fa544fd47') { echo 'Installer verified'.PHP_EOL; } else { echo 'Installer corrupt'.PHP_EOL; unlink('composer-setup.php'); exit(1); }"
php composer-setup.php
php -r "unlink('composer-setup.php');"

Vous devriez avoir un fichier composer.phar dans le répertoire courant.

Installez-le globalement en le plaçant dans le répertoire /usr/local/bin. Ce répertoire est sur le $PATH. Composer sera donc utilisable depuis n’importe où sur votre machine :

sudo mv composer.phar /usr/local/bin/composer

Tester :

composer

Vous devriez voir la documentation de Composer apparaître.

Configuration de Docker Desktop avec la WSL

Il ne reste plus qu’à dire à Docker Desktop d’utiliser NOTRE distribution, plus la sienne. Pour cela, se rendre dans l’interface de Docker Desktop/Réglages (roue dentée)/WSL Integration et cocher votre distribution Ubuntu.

Redémarrer Docker Desktop.

Et voilà !

Télécharger le kit de développement et lancer le projet

Depuis le shell GNU/Linux (on travaille là à présent !) :

git clone https://github.com/paul-schuhm/wordpress-php
cd wordpress-php/kit-dev
cp .env.dist .env
composer install
docker compose up -d

Le projet WordPress (et tous ses services) est lancé et prêt à l’emploi !

Référez-vous aux instructions du kit de développement en cas de problème (à jour)

Travailler avec VS Code sur la WSL

Pour travailler avec VS Code, comme si vous étiez sous Windows (de manière transparente), et sans avoir de problèmes de droits lors de la création de fichiers par exemple (par défaut tout fichier crée depuis Windows sur la partition Linux appartient à root, pas à votre utilisateur !), il faut faire une petite configuration :

  1. Installer VS Code sur Windows. Ne pas installer VS Code sur la distribution Linux;
  2. Dans VS Code sur Windows, installer l’extention dédiée Remote Development;
  3. Lancez votre distribution Linux (Ubuntu par défaut);
  4. Dans le shell linux, lancer VS Code :
code

La WSL va installer des paquets et vous ouvrir l’interface graphique de VS Code. Vous pouvez commencer à travailler !

Comme on travaille sur la WSL, lancer toujours VS Code depuis la WSL.

Conseil : créer un bookmark de l’emplacement de votre répertoire utilisateur sous linux /home/votre-user dans votre explorateur de fichiers Windows pour y revenir facilement.

Voir le guide officiel de Microsoft

Annexes

Commandes de base dans le shell GNU/Linux pour être à l’aise

Inspecter

Se déplacer

Créer/Détruire

Changer les droits sur un répertoire

Si le répertoire appartient à root (vu avec ls -al), il faut vous redonner les droits de lecture et d’écriture sur le dossier avec chown :

sudo apt chown -R <votre user>:<votre user> repertoire

Installer un paquet

Erreurs rencontrées et configuration de Windows

En cas de problèmes avec la WSL, veuillez consulter cette page de problèmes connus avant de demander de l’aide. Vous pouvez également consulter la FAQ pour en savoir plus.

Pour exécuter WSL 2, vous devez au préalable activer la plateforme de machine virtuelle Windows (appelée Hyper-V, l’hyperviseur natif de VM de Windows). Si ce n’est pas le cas, vous allez obtenir un message comme celui-ci "Please enable the virtual Machine Platform WIndows feature and ensure virtualization is enabled in the BIOS".

Pour activer la plateforme de virtualisation :

  1. Redémarrer votre machine, appuyez sur F2 ou la touche indiquée indiquée par votre carte-mère pour accéder au BIOS.

  1. Vous devez également activer les fonctionnalités Plateforme de l'hyperviseur Windows et Plateforme de machine virtuelle. Tapez “fonctionnalités windows” dans votre barre de recherche, puis activez-les. Redémarrez votre machine.

  2. Vérifier l’installation en tapant la commande suivante dans l’Invite de commande Wsindows:

systeminfo

La dernière entrée du rapport généré vous indiquera la configuration requise pour Hyper-V. Vérifier que tous les prérequis sont bien remplis.