Améliorer vos Dockerfile avec Hadolint
Introduction
Comment vérifier que nos Dockerfile
respecte l’ensemble des bonnes pratiques
DevOps ?
Très peu connu, Hadolint
est l’outil qui va vous aider à faire un Dockerfile
aux petits oignons. En effet, écrire des Dockerfile correcte n’est pas aussi
simple qu’on pourrait l’imaginer. C’est là qu’intervient Hadolint
!
Fonctionnement d’Hadolint
Hadolint
est une CLI qui vous aide à vérifier que vos Dockerfiles respectent les
meilleures pratiques. Hadolint
stocke votre Dockerfile
dans un arbre de syntaxe
abstraite (AST), après quoi il exécute un ensemble de règles prédéfinies à
l’aide de ShellCheck
pour vérifier la qualité du code.
Installation d’Hadolint
Hadolint
peut être installé avec asdf
, vous
savez au combien j’apprécie cet outil :
Vérifier vos Dockerfile
Je vais prendre un exemple trouver sur github.
Au premier abord ce Dockerfile semble pas mal du tout non ? Alors vérifions avec
Hadolint
.
On voit qu’Hadolint nous donne plusieurs conseils :
- A la ligne 5 il conseille de fixer une version de
poetry
. Et oui jamaislatest
. - A la même ligne 5 il indique que pour optimiser la taille de l’image il est
conseillé d’utiliser l’option
--no-cache-dir
depip
. Attention c’est inutile, car cette instruction se trouve dans la première étape de notreDockerfile
. - A la ligne 33 il conseille d’utiliser plutôt le format JSON pour les instructions CMD
Apportons les corrections :
On relance Hadolint
:
L’outil Hadolint
ne retourne plus de conseils.
Plus loin
Si vous débutez dans l’écriture des Dockerfile
, je vous propose de lire cette
documentation.
Vous savez que je conseille de créer vos propres images de containers pour
plus de sécurité. Donc cela veut dire que vous devez les stocker dans votre
serveur de gestionnaire de versions de code et lui ajouter un pipeline
CI/CD. Hadolint
devrait être intégré à votre pipeline dans la phase de
test. Il y a quelque temps, je vous avais montré comment mettre à jour vos
images de containers avec
renovate
.
Dans ce billet, j’utilise hadolint
, donc vous pouvez vous en inspirer.