Wsl Docker image

WSl & Docker, les avantage face à l’utilisation d’un AMP traditionnel.

En tant que développeur, tu sais que cela peut être compliqué et prendre beaucoup de temps, surtout pour gérer les dépendances et les configurations de l’environnement de développement. Sans parler des projets que tu récupères sur ta machine nécessitant d’anciennes version comparée à celles installées localement sur ta machine. Heureusement, il existe deux outils, WSL et Docker, qui peuvent t’aider à simplifier le processus.

WSL (Windows Subsystem for Linux), est intégré à Windows et te permet d’exécuter des applications Linux directement sur ton ordinateur Windows, sans avoir à utiliser une machine virtuelle ou dédiée. Cela signifie que tu peux continuer à travailler sur ton ordinateur Windows, tout en utilisant des applications Linux.

Docker, quant à lui, est un outil de virtualisation léger qui te permet de créer des containers pour tes applications. Les containers Docker sont autonomes et peuvent être déplacés et exécutés sur n’importe quel ordinateur doté de Docker, sans modification.

En utilisant WSL et Docker ensemble, tu peux bénéficier de :

  • Flexibilité: WSL et Docker sont très flexibles et vont te permettre de choisir ton environnement de développement, sans être limités par les configurations système.
  • Reproductibilité: Les containers Docker sont entièrement reproductibles, ce qui signifie que vas pouvoir créer des containers identiques sur plusieurs ordinateurs, sans avoir à se soucier des différences de configurations.
  • Portabilité: Les containers Docker peuvent être déplacés facilement d’un ordinateur à l’autre, sans aucune modification. Tu pourras travailler sur tes projets depuis n’importe où et sur n’importe quel ordinateur.
  • Rapidité: Les containers Docker sont légers et s’exécutent rapidement, tu vas gagner du temps en démarrant rapidement tes environnements de développement.

Super, mais comment on fait?

Rien de plus simple, voici les étapes pour utiliser WSL et Docker pour développer tes projets :

  1. Installes WSL sur ton ordinateur Windows en suivant les instructions sur le site web de Microsoft. (Si tu es sur windows 10 / 11 WSL est nativement installé. Pour en être sur tape la commande wsl -l -v dans PowerShell ou dans ton invite de commande Windows)
  2. Installes Docker Desktop sur ton ordinateur Windows en suivant les instructions sur le site web de Docker.
  3. Lances WSL en ouvrant une invite de commande Windows et en saisissant « bash ». Ou si comme moi, tu as la dernière version de l’invite de commande Windows peux cliquer ici :

Et si tout c’est bien passé, tu obtiens l’une des deux fenêtres suivantes :

Bravo, tu as WSl et Docker installé sur ta machine. Maintenant, ouvre l’application Docker Desktop ouvres Paramètres > Général et active si ce n’est pas fait : Utiliser le moteur basé sur WSL 2.

Appliquez et redémarrer.

Et pour tester tout ça, saisis « docker run hello-world » dans l’invite de commande WSL. Et normalement, tu obtiens :

Si ce n’est pas le cas ou si tu as des questions n’hésites pas à en faire part en commentaire.

Ensuite pour te servir de ses outils dans tes projets, tu aura besoin de construire tes images docker.

Créer son image Docker

Avec Docker Compose, tu peux orchestrer facilement tes conteneurs et simplifier le processus de déploiement. Cet outil te permet de décrire plusieurs conteneurs en tant qu’ensemble de services dans un seul fichier YAML, ce qui facilitera la gestion de tes applications.

Si tu as suivi l’article depuis le début, Docker Compose est déjà installé sur ta machine. Pour le vérifier utilise : docker-compose --version

Pour créer tes images, tu auras besoin de créer un fichier docker-compose.yml à la racine de ton projet, et un fichier Dockerfile que je mets par habitude dans un dossier docker.

Pour l’exemple, on partira du principe que mon projet utilise simplement PHP et MySql.

Un fichier docker-compose.yml commence toujours par l’argument de version pour préciser quelle version tu veux utiliser ( je te mets un exemple juste en dessous)

Ensuite, tu viendra déclarer les services avec les images associées. Sous l’argument services tout ce que tu déclareras sera un conteneur et identifié avec un nom propre à lui.

Dans mon exemple, je vais me retrouver avec un conteneur database et un conteneur php.

Dans le conteneur database, je viens déclarer l’image que je veux utiliser avec son numéro de version.
Je déclare les variables d’environnement et le port que je souhaite exposer de mon hôte vers le conteneur, en bref le rendre accessible depuis l’extérieur.

Pour le conteneur php, le build context, c’est pour lui indiquer où se situe notre fichier Dockerfile dont il a besoin pour se construire. Souvenez vous, c’est le fichier que nous avons créé préalablement dans le dossier docker.
L’argument volumes permet de stocker les données en local sur l’host dans le dossier /var/www/website.
Et ensuite pour l’argument depends_on, comme son nom l’indique, il dépendra de database c’est à dire que si database ne se monte pas, php ne se montera pas.

Chaque image/conteneur à ses propres instructions, vous pouvez tout retrouver sur DockerHub.

Maintenant, on va se tourner vers le Dockerfile.
On à vu préalablement que on demande à php de se construire depuis le Dockerfile, donc on aura toutes les instruction pour construire notre serveur php.

Dans cet exemple, nous utilisons une image de la version 8.2 de PHP. Nous exécutons ensuite diverses commandes en fonction des besoins des différents projets. Nous installons des bibliothèques telles que zlib1g, libicu zip, etc., mais pour configurer votre serveur en fonction de vos besoins, il faut se référer à la documentation officielle. Enfin, la dernière instruction « workdir » permet de modifier le répertoire courant. Toutes les commandes qui suivent cette instruction seront exécutées à partir du répertoire défini.

Un petit coup de docker-compose up -d et voilà, tes différents conteneurs sont lancés, et prêts à être utilisés.

Hésite pas à partager ton expérience en commentaire, partager cet article.

Good dev!

chevron_left
chevron_right

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Commentaire
Nom
E-mail
Site