Optimisation des images Docker Java avec Jdeps, Jlink et les layers

Résumé

Dans un contexte d'application web Java Dockerisée, le poids de l'application peut vite devenir un problème...
C'est en particulier le cas dans une application en micro-services : les images Docker se multiplient, l'espace disque sur les machines et l'espace alloué sur le dépôt Docker deviennent tous les deux des sujets critiques.

Cette présentation démontre l'utilisation de Jdeps et Jlink pour alléger les images Docker, les layers Docker et Spring pour profiter de la réutilisation, puis l'utilisation du Garbage Collector de Docker pour gérer intelligement le stockage sur la machine de build et enfin les impacts de ces solutions lors de l'utilisation de l'API Reflection.

Contexte

Cette présentation à été faite suite à un besoin survenu dans un projet en micro-services dockerisés.
Les micro-services se multipliant et le projet étant limité par les contraintes de l'infrastructure cliente, aussi bien pendant le build que lors du déploiement, nous avions été contraints de trouver une solution pour réduire la taille de nos images Docker.
Ce talk a d'abord été présenté à SQLI le 18/09/2024 sous une première version, puis au BordeauxJUG le 16/01/2025, dans une version plus complète (corrections, ajout du Garbage Collector et de remarques sur l'API Reflection).