Dockeriser une application Symfony sous Windows 10 Pro - Partie 1

Cet article explique comment j’ai pu passer tous mes projets PHP (Laravel, Symfony) sous Docker sur un système d’exploitation Windows Professionnel.

L’application cible est une application Symfony 3.4, avec PHP 7.0.33, Nginx 1.10.3, MySQL 5.7.28 et PhpMyAdmin.

Tout ce qui sera fait, le sera depuis un ordinateur sous windows 10 édition professionnelle.

Un bref rappel sur Docker

Pour faire du développement, spécifiquement PHP/Symfony, nous allons avoir besoin d’un serveur web Linux. Mais comme nous sommes sur un windows 10, plusieurs solutions s’offrent à nous :

  • machine virtuelle Linux comme VirtualBox
  • DualBoot Linux/windows 10
  • WAMP (Windows Apache MySQL PHP)
  • Windows Linux Subsystem (WSL Ubuntu 1.04 LTS)
  • Docker avec Docker Desktop

Pour des raisons évidentes que nous détaillerons dans un tout prochain article nous partirons sur un docker. Nous nous concentrerons sur la procédure de passage.

Docker est un outil libre qui permet de lancer des applications dans des conteneurs logiciels isolés.

Il est composé d’un daemon qui permet de gérer les conteneurs et d’une puissante api pour composer ses conteneurs et donc définir les conteneurs de son application.

 

Image, Conteneur, Dockerfile

Une image docker est un ensemble de couches logicielles en lecture seule (Read-only) empilées les unes sur les autres.

Chaque couche représente une instruction du dockerfile de l’image.

Et la couche la plus haute est en lecture / écriture, c’est le conteneur.

Le conteneur correspond donc à la fine couche logicielle en lecture/écriture au-dessus de l'image.

Pour faire une analogie, l’image correspondrait à un moule et le conteneur, ce qui est fabriqué à partir du moule.

Un objet ou une instance construite à partir du moule.

 

Aussi, il existe la plateforme collaborative docker.hub.com qui regroupe toutes les images déjà créées et permet aux développeurs d’ajouter les leurs.

Il poursuit plusieurs buts pour les développeurs :

  • Permettre un démarrage très rapide de ses applications et arrêter de gaspiller des heures pour mettre en place son environnement de développement.
  • Tenir un environnement local le plus proche possible de son environnement de production
  • Supprimer le problème des environnements de développement instables et le fameux « ça marche sur ma machine » en permettant d’empaqueter les applications, la configuration et les dépendances de celle-ci dans un ou plusieurs conteneurs isolés
  • Apaiser les inquiétudes sur la sécurité

Voici pour cette première partie, nous allons entrer dans le vif du sujet dans la partie 2 de cet article.

 

Restez informés sur notre actualité

Inscrivez-vous à notre newsletter pour recevoir les dernières évolutions de notre produit