Contruire une image docker à la suite d’un build maven

Pour mes premiers pas avec docker, je souhaitais faire une appli web java très simple qui s’intègre dans une image docker au moment du build.

J’ai trouvé quelques exemples de plugin maven pour construire facilement une image  mais la plupart utilise une api REST en http qui ne fonctionne plus depuis la version 0.56 de docker. Il faut maintenant utiliser une socket Unix.

J’ai donc utiliser un plugin maven pour lancer la construction de l’image via une ligne de commande (il y a sûrement mieux, mais c’était aussi pour aller vite):

Cette commande va construire l’image à partir d’un fichier DockerFile et va poser un tag composé du nom de l’artefact et de la version. Ce sera plus facile pour retrouver l’image par la suite.

Le fichier Dockerfile est construit comme ceci:

On indique à partir de quelle image on se base. Ici c’est un tomcat.

Puis on ajoute le war dans un répertoire particulier pour que tomcat le charge au démarrage.

Et enfin, on expose le port 8080 pour pouvoir accéder au tomcat depuis l’extérieur du conteneur.

Pour ce faire, il faut lancer le container avec la commande:

Puis la commande :

qui va lister les containers en cours d’exécution et indiquer le container id de chacun.

Et enfin la commande suivante pour récupérer l’adresse du container.

On peut maintenant vérifier que l’application fonctionne bien dans un navigateur:

hello world

Voila pour cette première rencontre avec docker.

Les sources sont ici : https://github.com/BenoitCharret/session-webapp