API Hour – « De la reconversion au succès, mon parcours de freelance » : replay bientôt disponible

Comment déployer Docker pour développer avec Symfony

2023-07-04
Déployer Docker pour développer avec Symfony
Si vous êtes un développeur passionné par Symfony, vous savez déjà combien il est essentiel de disposer d’un environnement de développement cohérent et reproductible. C’est là que Docker entre en jeu : vous allez enfin pouvoir vous concentrer sur la création de votre application sans vous soucier des dépendances 

Déployer Docker pour développer avec Symfony en 6 étapes :

🤝 On vous présente Docker :

Docker est une plateforme de conteneurisation qui vous permet d’emballer vos applications et leurs dépendances dans des conteneurs légers et portables.

Si vous voulez faire plus ample connaissance et découvrir ses nombreux avantages, on vous conseille de lire notre article : « emboîter le pas de la conteneurisation avec Docker« .

Vous l’avez déjà lu ? Vous êtes là pour découvrir comment déployer Docker pour développer avec Symfony ? Très bien ! On va vous guider étape par étape.

👷‍♂️ Étape 1 : installer Docker

Rendez-vous sur le site officiel  pour télécharger la version appropriée pour votre système d’exploitation et suivez les instructions d’installation

 

🏗️ Étape 2 : créer un fichier de configuration

Une fois Docker installé, vous devez créer un fichier de configuration pour votre environnement de développement Symfony. Ce fichier, généralement appelé “docker-compose.yml”, contient les informations nécessaires pour exécuter votre application Symfony dans un conteneur Docker.

Un exemple, s’il vous plaît !

On commence par définir un réseau sur lequel se retrouveront les différents conteneurs permettant à Symfony de fonctionner :

Code Docker 1 800x163 1 oclock

Ensuite, on définit les services eux-mêmes. Commençons par MySQL :

Code Docker

Dans cet exemple, nous avons configuré un service :“mysql”. Le service “mysql” est responsable des données de votre application Symfony.

La clé environnement, elle, permet de créer un utilisateur et une base de données grâce aux informations mentionnées.

La clé volume, quant à elle, permet de pouvoir faire persister les données. Si l’on redémarrait le service sans cette clé, on serait obligé de repartir d’une base de données vide à chaque fois.

Et la clé “ports” dit à Docker de faire communiquer le port 3306 du conteneur avec le port 3307 de l’hôte. Ainsi, on ne rencontre pas de conflits si l’on a déjà une instance de MySQL qui tourne sur notre hôte, sachant que le port 3306 est le port sur lequel MySQL écoute par défaut.

Enfin, on ‘branche’ le service MySQL sur le réseau que l’on a créé en premier, il sera bientôt rejoint par d’autres services, et ils pourront tous communiquer joyeusement !

⚠️ Chaque clé commençant par “MYSQL” est personnalisable.

On a pu mettre en place un service directement dans un fichier “docker-compose” car on n’a pas besoin de personnaliser ce service. Les conteneurs suivants seront différents, on devra les personnaliser pour permettre à Symfony de fonctionner correctement.

C’est bon ? Allez, on est lancé : on poursuit avec le service Apache !

🚧 Étape 3 : créer un fichier Dockerfile

En plus du fichier de configuration Docker, vous devez également créer un fichier “apache.dockerfile”. Ce fichier décrit les étapes nécessaires pour créer une image du serveur http Apache.

Un exemple, s’il vous plaît !

On customise l’image du serveur Apache sous Ubuntu :

Code Docker

Ce “Dockerfile” utilise une image Docker officielle Apache sous Ubuntu comme point de départ. Il met en place la configuration nécessaire au serveur Apache afin de servir une application PHP Symfony. Le serveur Apache démarre automatiquement et écoute sur le port 8080. Comme indiqué dans le fichier docker-compose.yml, il faut en effet ajouter un service Apache prenant en compte ce Dockerfile de configuration :

Code Docker

Ici, le volume permet de copier dans le conteneur l’application Symfony située dans le répertoire src de l’hôte, ainsi, on peut développer notre application et voir les modifications apportées en temps réel dans le conteneur sur l’URL http://localhost:8080.

🚢 Étape 4 : configurer le service PHP

Comme pour le service Apache, deux étapes sont nécessaires :

  1. Un fichier Dockerfile pour personnaliser le service PHP, afin qu’il fonctionne avec apache et Symfony.
  2. L’ajout de ce service dans le fichier docker-compose.yml
Code Docker

Ce fichier configure ‘php’ avec les extensions nécessaires à Doctrine pour travailler avec MySQL (N.B. Doctrine est un outil de mappage objet-relationnel pour PHP qui nécessite certaines extensions PHP pour fonctionner avec des bases de données comme MySQL).

CMD [« php-fpm »] : cette instruction définit la commande par défaut à exécuter lorsque le conteneur démarre. Dans ce cas, la commande “php-fpm” est utilisée pour lancer le serveur PHP-FPM, qui est nécessaire pour exécuter l’application Symfony.

Ces instructions peuvent être modifiées en fonction des besoins spécifiques de votre projet Symfony.

Par exemple, vous pouvez :

  • ajuster les versions PHP, 
  • ajouter d’autres extensions,
  • configurer des variables d’environnement supplémentaires.

Il ne nous reste qu’à ajouter le service ‘php’ au fichier ‘docker-compose’ :

Code Docker

🚢 Étape 5 : configurer le service composer

On fait la même chose pour ‘composer‘, un dockerfile de base ainsi que l’ajout du service au ‘docker-compose’ :

Code Docker 7 800x175 1 oclock
Code Docker

🚢 Étape 6 : lancer les conteneurs Docker

Maintenant que vous avez créé votre fichier de configuration Docker et votre fichier Dockerfile, il est temps de lancer les conteneurs Docker pour exécuter votre application Symfony.

Ouvrez une fenêtre de terminal, placez-vous dans le répertoire de votre projet et exécutez les commandes suivantes :

Code Docker
Code Docker 9 800x56 1 oclock

Cette liste de commandes créera une application Symfony dans un répertoire src, la commande suivante construira les images Docker nécessaires et démarrera les conteneurs.

Code Docker 10 800x70 1 oclock

Une fois les conteneurs lancés, vous pouvez accéder à votre application Symfony en ouvrant votre navigateur web, et en vous rendant sur l’adresse : http://localhost:8080 (ou l’adresse correspondante à votre configuration de ports dans le fichier “docker-compose.yml”).

 

👏 Félicitations, vous avez configuré Docker avec Symfony ! Vous pouvez à présent développer votre application Symfony dans un environnement Docker isolé et reproductible
Vous allez enfin pouvoir vous concentrer sur la création de votre application sans vous soucier des dépendances ou des problèmes de compatibilité, et ça, c’est une sacrée différence ! Maintenant, n’hésitez pas à explorer davantage les fonctionnalités de Docker et à adapter cette configuration de base en fonction des besoins spécifiques de vos projets Symfony par exemple en approfondissant ces notions avec notre formation concepteur développeur d’applications
Et si vous souhaitez une illustration en images, voici une vidéo intéressante (5 minutes), de YoanDev qui met tout cela en mouvement :