Comment déployer Docker pour développer avec Symfony

2023-07-04
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 ou des problèmes de compatibilité ! 🎉

🤝 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 les nombreux avantages que Docker peut vous apporter dans votre quotidien, on vous conseille de lire notre article : Emboîter le pas de la conteneurisation avec Docker.

Vous l’avez déjà lui ? Où vous savez exactement ce que vous voulez, et 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

Pour cette partie, on vous donne rendez-vous sur le site officiel de Docker :
SE RENDRE SUR LE SITE 

Téléchargez la version appropriée pour votre système d’exploitation et suivez les instructions d’installation. Ensuite, on se retrouve à la prochaine étape.

⚠️ Veillez à bien installer la dernière version de docker.

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

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

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 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 cette image : DÉCOUVRIR L’IMAGE

C’est limage officielle 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.

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
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

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

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…