Docker
Docker, le socle de nos environnements
Docker est une plateforme de conteneurisation : elle permet d’empaqueter une application avec tout ce dont elle a besoin pour s’exécuter (runtime, bibliothèques, configuration) dans une image, puis de lancer cette image sous forme de conteneurs isolés, sur n’importe quelle machine équipée de Docker.
Contrairement à une machine virtuelle, un conteneur n’embarque pas de système d’exploitation complet : il partage le noyau de la machine hôte et ne contient que ce qui est propre à l’application. Il démarre en quelques secondes, consomme peu de ressources, et se comporte de la même manière sur le portable d’un développeur, dans un pipeline d’intégration continue ou sur un serveur de production.

Pourquoi conteneuriser une application web ?
Une application web moderne repose sur de nombreuses briques : PHP ou Node.js dans une version précise, une base de données, un cache, une file de messages, un moteur de recherche… Sans Docker, chaque personne qui rejoint le projet doit reconstituer cette pile à la main, avec son lot de « ça marche sur ma machine ».
Avec Docker, la pile est décrite dans le dépôt du projet, versionnée avec le code, et identique pour tout le monde :
- un nouveau projet ou un nouvel arrivant démarre en une commande ;
- plusieurs projets aux dépendances incompatibles cohabitent sur un même poste ;
- la même image sert aux tests automatisés et à la production ;
- une mise à jour de PHP ou de la base de données se teste en modifiant une ligne, et se partage par une simple revue de code.
Comment nous utilisons Docker chez JoliCode
Docker fait partie de notre quotidien depuis 2013. Nous l’utilisons à chaque étape du cycle de vie d’une application, du premier commit à la mise en production.
🧑💻 En développement
Tous nos projets démarrent avec un environnement Docker complet : PHP, serveur web, base de données, HTTPS local et noms de domaine dédiés grâce à un reverse proxy Traefik.
Chaque développeuse ou développeur retrouve exactement la même pile, quelle que soit sa machine, et peut faire tourner plusieurs branches d’un même projet en parallèle, chacune dans sa propre stack.
🔁 En intégration continue
Les images construites pour le développement servent aussi à exécuter les tests : analyse statique, tests unitaires et fonctionnels, tests de bout en bout avec Playwright.
Ce que la CI valide est exactement ce qui tourne sur les postes de l’équipe, ce qui supprime une source classique d’écarts et de régressions. Nous aidons aussi nos clients à optimiser leurs pipelines de build et de déploiement.
🚀 En production
Nous construisons des images de production minimales et immuables, publiées sur un registre privé, puis déployées sur des serveurs dédiés, dans le cloud ou sur site, chez le client.
Cette approche nous permet de proposer des déploiements reproductibles, des retours arrière rapides et une infrastructure que l’on peut reconstruire à l’identique.
Docker Starter, notre kit open source
Depuis 2019, nous maintenons Docker Starter, un squelette d’infrastructure Docker prêt à l’emploi pour les projets web, et en particulier les projets PHP. Il s’agit de la version publique et épurée de l’environnement que nous utilisons sur nos propres projets.
Docker Starter fournit d’emblée PHP, Nginx, PostgreSQL (ou MariaDB), un routage HTTPS par Traefik, une stack isolée par worktree Git et la construction d’images de production. Des recettes permettent d’ajouter en quelques minutes Redis, RabbitMQ, Mailpit, Mercure, Elasticsearch, Blackfire ou encore un navigateur headless pour les tests.
Nous avons raconté son évolution sur ce blog, depuis sa première version jusqu’à la version 3. Piloté d’abord par Fabric, puis par Invoke, il s’appuie aujourd’hui sur Castor.


Castor, pour piloter Docker sans friction
Docker seul ne suffit pas à offrir une bonne expérience de développement : il faut encore orchestrer la construction des images, le démarrage des services, l’installation des dépendances, le chargement des données de test ou le déploiement.
C’est pour cela que nous avons créé Castor, un task runner écrit en PHP. Dans nos projets, une commande suffit pour installer et démarrer l’environnement complet, et les mêmes tâches servent en local, en CI et en production. Castor est disponible en version stable et utilisé bien au-delà de nos murs.
Faire appel à JoliCode pour votre infrastructure Docker
Nous parlons de Docker en conférence depuis le PHPBenelux 2014, nous avons suivi de près son évolution et nous l’avons déployé sur des projets de toutes tailles, de la start-up au grand compte. Nous pouvons vous accompagner pour :
- Conteneuriser une application existante, en modernisant au passage son environnement de développement et son intégration continue.
- Auditer une infrastructure Docker en place, pour sécuriser les images, fiabiliser les déploiements et réduire les temps de build.
- Former votre équipe aux bonnes pratiques Docker et Docker Compose, afin qu’elle soit autonome au quotidien.
💡 Vous avez un projet ou une question autour de Docker ?Écrivez-nous
Nos derniers articles sur Docker
Nous publions régulièrement notre état de l’art ou nos recommandations concernant les outils que nous mettons en œuvre.
Simplifier la génération de certificats SSL avec Let’s Encrypt
Lorsque que nous devons assurer nous-mêmes l’hébergement de certains projets (pour des clients ou des projets internes), nous utilisons Ansible pour provisionner les serveurs et/ou déployer nos applications. Au…
par Loïck Piera
Symfony, reverse proxies and IP protection
Following an issue encountered on one of my projects, I had to dive into how IP protection works in Symfony applications when at least one reverse proxy is in front of them. After some research, trial and error, …
par Loïck Piera
Appliqué chez nos clients
Dans le cadre du renouveau de sa stratégie digitale, Orpi France a fait appel à JoliCode afin de diriger la refonte du site Web orpi.com et l’intégration de nombreux nouveaux services. Pour effectuer…
Ouibus a pour ambition de devenir la référence du transport en bus longue distance. Dans cette optique, les enjeux à venir de la compagnie sont nombreux (vente multi-produit, agrandissement du réseau, …
Nous avons entrepris une refonte complète du site, initialement développé sur Drupal, dans le but de le consolider et de jeter les bases d’un avenir solide en adoptant Symfony. La plateforme est hautement…