Créer un automated build sur le Dockerhub
Ça fait quelques semaines maintenant que j’ai mis à disposition sur le Dockerhub ma première image Docker. Sans aller jusqu’à dire qu’elle a déplacé les foules, je suis assez content de voir que je ne suis pas le seul à l’utiliser avec une 100aine de « pull », même si sur le segment des images préconfigurées pour XWiki, les builds de Hellyna et Lavadiablo sont bien plus souvent téléchargées. Et c’était sans compter sur l’image Docker officielle de XWiki qui est sortie juste avant que je ne publie cet article !
Mais aussi auto-satisfait que je suis, je suis forcé de le reconnaître, cette image Docker pêche d’un défaut de jeunesse : la mise à disposition d’une nouvelle version nécessite :
- Que je modifie (et éventuellement que je le push sur Github) mon code sur mon repository git
- Que je la build moi même à partir du code
docker build -t zwindler/xwiki-tomcat8:latest .
- Et une fois l’image sur mon Docker registry local, que je lance la commande
docker push zwindler/xwiki-tomcat
Mais, vous l’aurez deviné, il y a mieux ;-)
Une fonctionnalité de Dockerhub vous permet de créer une image que vous poussez manuellement ou une image dont la création est automatique. On peut distinguer ces deux types d’images par la mention automated build sous le nom de celle ci.
Comment en profiter ?
Tout commence d’abord par renseigner quelques informations dans votre profil. Dans les propriétés de votre compte, il y a un menu « Linked Accounts & Services ».
Ce menu vous permet de lier le Dockerhub avec un ou plusieurs comptes Github/Bitbucket via une autorisation de type OAuth.
Au delà de simplement lier les deux comptes, Dockerhub paramètre vos dépôts git et y ajoute des services (webhooks préconfigurés) permettant de prévenir automatiquement Dockerhub de la présence de code mise à jour sur GitHub.
Créer son premier automated build
Maintenant que les permissions sont bien passées entre Github et Dockerhub, on peut créer son image automatique.
Ici j’ai sélectionné mon compte Github, puis le projet qui contient mon projet xwiki-tomcat.
La suite de la création de l’image est similaire à la création d’une image « non automatique ». On donne un nom à l’image ainsi qu’une petite description et on valide en cliquant sur create.
Dans mon cas, ça n’a pas fonctionné du premier coup et le build a échoué car par défaut l’image cherchait le Dockerfile à la racine du projet Github. Sur mon dépôt git, le Dockerfile est situé dans un sous dossier, la racine contenant le README et un fichier docker-compose.
Dans ce cas précis, il faut donc aller dans le build settings et renseigner la variable « Dockerfile location ».
A noter : pour plus de clarté dans mes images, j’ai indiqué que la branche Master dans git correspondait au tag « latest » et ait ajouté une seconde ligne avec la branche Master taguée avec le numéro de version (actuellement 8.4.4).
Ainsi, les utilisateurs pourront soit récupérer la dernière version, soit spécifier la version 8.4.4 manuellement.
Et cerise sur le gâteau, j’ai également ajouté une branche 7.4.5-lts dans Github qui me permet de proposer de manière optionnelle une image préconfigurées avec la version LTS actuelle de XWiki.
Conclusion
Il est très simple de créer un automated build dans Dockerhub et vous avez donc tout intérêt à arrêter de pusher manuellement vos images si vous déposer votre code Github.com.
Seul bémol, le manque d’intégration avec Git ou même Gitlab qui sera un vrai point noir si vous avez votre propre dépôt personnel ou d’entreprise en dehors des deux services en lignes proposés par Dockerhub.