Pourquoi un environnement de développement basé sur Docker ?

Stéphane Klein
2 min readMar 19, 2018

--

Hier matin j’ai voulu tester rapidement loderunner/boilr-grpc, bien mal m’en a pris !

Je pensais y consacrer 10min et cela m’a pris plus de deux heures pour faire « tomber l’exemple en marche » !
Ce moment de frustration m’a donné la motivation pour me lancer dans la rédaction de ce billet.

Ce que j’attends lorsque j’aborde un projet ?

Je veux pouvoir tester le projet le plus rapidement possible.
Pour cela, le README.md doit m’indiquer :

  • comment lancer le projet avec le moins de friction possible
  • comment jouer avec l’application

Pour illustrer cela avec un exemple, j’ai publié une version modifiée de loderunner/boilr-grpc: POC Golang gRPC with a REST Gateway.
Ce projet est basé sur un environnement de développement Docker et normalement il est testable out of the box (si ce n’est pas le cas, ouvrez une issue).

Extrait du README.md

Avantages d’un environnement de développement basé sur Docker

👍 Dans le projet POC Golang gRPC with a REST Gateway, la complexité d’installation des dépendances de compilation est totalement gérée dans le Dockerfile:

Dockerfile du projet POC Golang gRPC with a REST Gateway

D’autres projets ont besoin de librairies un peu compliquées à installer, quelques exemples:

  • extrait du Dockerfile d’un projet qui a besoin d’une version spécifique de git et de libgit2:
  • extrait du Dockerfile d’un un projet qui a besoin de antiword, pstotext… pour d’extraction de textes dans des documents:

L’utilisation de Docker comme environnement de développement permet d’utiliser ces librairies exactement dans les même conditions qu’en production.

👍 Cloisonnement entre cet environnement de développement et mon OS hôte : uniquement Docker, docker-compose et task sont installés sur mon macOS. Exemple :

Extrait du README.md du projet Poc Golang gRPC with a REST Gateway

👍 Cet environnement fonctionne de la même façon sous macOS que sous GNU/Linux (Il faudrait ajouter dans le README.md les instructions apt-get… en plus des instructions brew).

👍 Un environnement de développement basé sur Docker minimise la divergence entre le développement et la production.

Pour approfondir le sujet :

  • Comment créer un environnement de développement Docker pour un projet Python (en cours de rédaction)
  • Comment créer un environnement de développement Docker pour un projet Golang (en cours de rédaction)
  • Comment déployer un projet Python avec Docker en respectant la méthodologie 12 facteurs (en cours de rédaction)
  • Comment déployer un projet Golang avec Docker en respectant la méthodologie 12 facteurs (en cours de rédaction)
  • Comment déployer un projet Python sur Kubernetes (en cours de rédaction)
  • Comment déployer un projet Golang sur Kubernetes (en cours de rédaction)

--

--

Stéphane Klein

French artisan, geek, citoyen & Table Tennis player. I’m working for Scaleway, and I write code for fun and profit.