TECHNOLOGIES

Docker : pour des environnements de développement et CI maîtrisés

Docker conteneurise nos environnements de développement et de CI pour garantir que chaque développeur travaille dans des conditions identiques, quelle que soit sa machine. Un seul docker compose up suffit à démarrer un projet Symfony complet.

Cette vous explique pourquoi nous sommes convaincus par Docker pour nos projets et vous fournit l'essentielle des commandes du quotidien.

Docker logo

PRÉSENTATION

Qu'est-ce que Docker ?

Docker est un système de gestion qui permet de découper les environnements d'exécution de vos applicatifs en briques indépendantes appelées conteneurs. Chaque conteneur embarque toutes les dépendances nécessaires pour votre programme, tout en étant beaucoup plus léger qu'un système d'exploitation complet.

L'arrivée de Docker sur le marché a été une révolution : il a résolu une multitude de problèmes liés à l'utilisation de machines virtuelles. La construction de conteneurs est accessible à tous grâce aux fichiers Dockerfile, qui permettent de partager et d'étendre facilement votre travail. D'un point de vue technique, Docker s'appuie sur LXC (Linux Containers) et s'utilise en ligne de commande, souvent associé à Docker Compose pour orchestrer un ensemble de conteneurs.

Chez SmartBooster, nous avons industrialisé l'intégralité de nos environnements de développement grâce à Docker et nous partageons nos images en open source sur GitHub.

Logo Docker

POURQUOI DOCKER

Ce qui en fait notre standard d'environnement

Docker est présent sur tous nos projets Symfony dès le premier jour. Voici pourquoi nous ne développons plus sans lui.

Environnement identique sur tous les postes

Avec Docker, chaque développeur dispose exactement du même environnement : même version de PHP, même version de MySQL, même configuration Nginx. Le classique "ça marche chez moi" disparaît.

Onboarding en une commande

Un nouveau développeur clone le projet et lance docker compose up. L'environnement complet est prêt en quelques minutes sans installer PHP, MySQL ou Nginx localement.

Isolation des services

PHP, base de données, cache Redis, serveur mail de test → chaque service tourne dans son propre conteneur. Pas de conflit de version entre projets, chaque projet a sa propre configuration.

Environnement de CI identique au dev

Le pipeline GitLab CI s'exécute dans le même conteneur Docker qu'en développement. Les tests PHPUnit et les analyses PHPStan tournent dans des conditions identiques à celles du poste du développeur → pas de surprises liées à l'environnement.

Environnement jetable et propre

Besoin de tester une migration de base de données ? On repart d'un conteneur vierge en quelques secondes. Pas de résidus, pas d'état persistant non maîtrisé qui fausse les tests.

Versionné avec le projet

Le docker-compose.yml et le Dockerfile vivent dans le dépôt Git. L'environnement évolue avec le code et chaque changement d'infrastructure est tracé et réversible.

NOTRE USAGE

Comment nous utilisons Docker chez SmartBooster

Notre configuration Docker suit une structure commune à tous les projets pour réduire la courbe d'apprentissage et faciliter la reprise.

Stack Symfony basée sur symfony-docker

Nos projets Symfony s'appuient sur notre template open source smartbooster/symfony-docker : PHP-FPM, Nginx et MySQL préconfigurés, prêts à cloner et démarrer en une commande.

Volumes pour la persistance

Les données de la base de données sont stockées dans un volume Docker nommé pour survivre aux redémarrages de conteneurs. Le code source est monté en bind mount pour le rechargement à chaud.

Variables d'environnement via .env

Les configurations sensibles (DSN base de données, clés API) transitent par les variables d'environnement. Le fichier .env.local est ignoré par Git.

Pour aller plus loin

Documentation utile

smartbooster/symfony-docker : notre template Docker open source

Stack PHP-FPM + Nginx + MySQL préconfigurée pour les projets Symfony SmartBooster.

Pour aller plus loin

Approfondir votre réflexion

Développement de logiciel sur mesure

Docker garantit que chaque développeur travaille dans un environnement identique à la production, réduisant les bugs liés aux différences de configuration.

Symfony

Notre template Docker open source est optimisé pour les projets Symfony : PHP-FPM, Nginx, MySQL et toutes les dépendances préconfigurées.

Hébergement et maintenance Symfony

Docker simplifie le déploiement et garantit la portabilité de nos applications entre les environnements de développement, staging et production.