Dockerisation d’une application Symfony

blog / Techno / DevOps / Dockerisation d’une application Symfony

Dockerisation d’une application Symfony

10 Sep, 2021 |
Docker Symfony

Que l’on soit Dev ou Ops, tout le monde a déjà entendu la fameuse phrase “ça marche pas sur mon poste”. Quand ce genre de problème survient, il se situe souvent dans les différences entre les configurations des systèmes.

Un premier pas dans l’uniformisation des environnements a été entrepris avec l’introduction des machines virtuelles. Malheureusement, elles nécessitent les mêmes opérations que les machines de développement , comment on réglera le soucis ?

C’est quoi Docker ?

« Docker » est la technologie de conteneurisation qui permet la création et la manipulation de conteneurs ( enveloppe virtuelle qui permet de packager une application avec tous les éléments dont elle a besoin pour fonctionner : fichiers source, librairies, outils et fichiers. )

Dockerisation d'une application Symfony 2 - Webpick

Avec la technologie Docker, vous pouvez traiter les conteneurs comme des machines virtuelles très légères et modulaires. En outre, ces conteneurs offrent une flexibilité impressionnante  .

Dockerisation d'une application Symfony 4 - Webpick

Fichiers docker :

DockerFile:

C’est un fichier texte qui décrit la création d’un conteneur. Il permet d’avoir des modèles de conteneur très personnalisables. Chaque instruction ou ligne contenu dans Dockerfile créera une nouvelle couche  correspondant à chaque étape de la construction de l’image .

Le syntaxe d’un dockerFile : 

FROM ubuntu:18.04
COPY . /app
RUN make /app
CMD python /app/app.py


Chaque instruction définit une couche .

  • FROM : crée une couche à partir de l’image d’ ubuntu:18:04
  • COPY : ajoute des fichiers via le dossier courant de client docker 
  • RUN : construire l’application avec make 
  • CMD : spécifie la commande à exécuter dans le conteneur 

Docker-compose.yml

A cause de  l’utilisation excessive de docker , la gestion des différents conteneurs devient une tâche fastidieuse. Docker compose est un outil qui nous aide à surmonter ce problème ,docker compose fonctionne en appliquant plusieurs règles de gestion sous un seul fichier docker-compose.yml , ces derniers écritent sous yaml , sont plus lisibles .

Structure fichier docker-compose.yml :

version: “3.7”

services:
volumes:
networks:

  • services : référant à l’ensemble des configuration de chaque conteneur .
  • Volumes : les dossiers partagés entre les conteneurs et l’hôte 
  • networks : définissent les règles de communication inter-conteneurs et le réseau de l’hôte .

Et on exécute notre fichier directement via : docker-compose up

Utilisation Docker Hub :

Docker Hub est un service par docker pour trouver et partager les images des conteneurs .

Ce service  englobe les fonctionnalités suivantes: 

Les répertoires : pour faire des opérations push /pull des images

Les équipes et les organisations : pour gérer l’accès privé aux répertoires

Les images officielles : pour utiliser des images authentiques , maintenues  et fiables

Les builds : L’automatisation de la construction des image à partir des services de versionning

C’est quoi Symfony ?

est un ensemble de composants PHP ainsi qu’un framework MVC libre écrit en PHP. Il fournit des fonctionnalités modulables et adaptables qui permettent de faciliter et d’accélérer le dev d’un site web , fondée par SensioLabs  ,les composants robustes de symfony représentent des piliers dans la structure de nombreuses projets (CMS, E-commerce, CRM…). réference : https://symfony.com/projects

Dockerisation d'une application Symfony 6 - Webpick

Partie Pratique :

Création d’un fichier environnement .

Créer une fichier .env va nous aider à dynamiser la gestion de nos conteneurs et faciliter la lisisbilité de notre fichier docker-compose.yml

Dockerisation d'une application Symfony 8 - Webpick

Création d’un fichier docker-compose.yml :

Le fichier docker-compose englobe plusieurs services :
Nginx : Serveur http
PHP-Fpm : une version PHP uploadé à partir du Docker Hub
Composer : pour la gestion des dépendances
PhpMyAdmin : pour l’interface utilisateur de la base de données
Mysql : un SGBD

Dockerisation d'une application Symfony 10 - Webpick

Construction d’une configuration serveur Nginx:

On utilisera une config nginx simple avec un listener sur le port 80 et une implémentation des localisations de requête :

Dockerisation d'une application Symfony 12 - Webpick

Architecture des dossiers :

Dockerisation d'une application Symfony 14 - Webpick

On lance la commande : docker-compose up -d pour construire nos conteneurs en arrière plan

Dockerisation d'une application Symfony 16 - Webpick

Installation symfony via composer :

On teste si composer est correctement installé via :

Dockerisation d'une application Symfony 18 - Webpick

On supprime le dossier Web déjà crée dans l’architecture des dossiers et on installe une version de symfony à l’aide de la commande suivante :

Dockerisation d'une application Symfony 20 - Webpick

Conclusion :

Grâce à Docker,on peut optimiser les configurations sur l’environnement de développement, sans limiter les performances de l’ordinateur. Les ressources sont partagées avec la machine hôte ! simple, efficace !

Livre Blanc Divi

Accédez au Livre Blanc Divi rédigé par l’équipe Webpick et découvrez comment WordPress peut révolutionner votre vision de l’édition de contenus sur le web !

Disponible en version web en cliquant ici, ou en pdf envoyé à votre boîte email à travers le formulaire suivant :

Catégories

à propos

Webpick a été fondé en 2015 par Taoufik, AKA Tao. Vétéran du web à Marrakech, Tao a construit une belle équipe de spécialistes des technologies, principalement PHP et WordPress. Accaparé par les multiples projets de l’incubateur EBF (Emerging Business Factory) qu’il a confondé, Tao a laissé les rênes de Webpick à son ami et associé David à partir de 2018.

Partager cette page

À propos de l’auteur

Mohamed Elmehdi Zarbag

Mohamed Elmehdi Zarbag

Auteur

Un ingénieur d'étude et développement chez Webpick , intéressé par le Web , PHP , Mobile , Docker , Python .