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.
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.
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 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
Stack PHP-FPM + Nginx + MySQL préconfigurée pour les projets Symfony SmartBooster.
Pour aller plus loin
Approfondir votre réflexion
Docker garantit que chaque développeur travaille dans un environnement identique à la production, réduisant les bugs liés aux différences de configuration.
Notre template Docker open source est optimisé pour les projets Symfony : PHP-FPM, Nginx, MySQL et toutes les dépendances préconfigurées.
Docker simplifie le déploiement et garantit la portabilité de nos applications entre les environnements de développement, staging et production.