Comment publier des images Docker Node.js dans le registre Docker Hub avec GitHub Actions
9 août 2021
0 minutes de lectureDans un précédent article, nous avons présenté un tutoriel détaillé expliquant comment publier des images Docker Node.js dans le registre GitHub Packages avec GitHub Actions. Dans cet article, nous allons nous intéresser à la publication de l’image Docker que nous avons créée sur le registre public Docker Hub.
Vous vous demandez peut-être à quoi cela peut servir. L’application en ligne de commande Docker docker utilise par défaut le registre docker.io, qui pointe vers Docker Hub. Cela offre une expérience développeur agréable : il suffit de récupérer les images selon la convention <user>/<repository>, comme dans l’exemple suivant si vous souhaitez utiliser Snyk CLI sous forme d’image Docker :
Dans cet article, nous allons détailler étape par étape la configuration d’un autre workflow de création et de publication d’images Docker, qui peut fonctionner en parallèle du workflow précédent présenté pour le registre GitHub Packages.
Comme le précédent, cet article fait suite à celui consacré à Dockly, l’outil open source en ligne de commande Node.js pour gérer des conteneurs Docker depuis la CLI, et explique comment envoyer une image Docker sur Docker Hub. Vous pouvez consulter le workflow final dans le dépôt GitHub de Dockly.
Créer un workflow GitHub Actions
Pour ajouter un workflow, il suffit de créer un nouveau fichier dans le répertoire .github/workflows/, ou d’ouvrir votre dépôt open source sur GitHub, de cliquer sur l’onglet Actions, puis sur New Workflow pour commencer à créer un workflow :

Choisissez le nom du fichier de workflow de publication sur Docker Hub, par exemple docker-publish-to-dockerhub.yml.
Si vous effectuez cette opération depuis l’interface GitHub, un fichier de workflow peut être prérempli. Dans ce cas, supprimez-le et ajoutez le contenu suivant :
Nous avons expliqué chacun de ces points en détail dans l’article précédent. Pour résumer :
Ce workflow Docker Hub s’exécutera à chaque push, à chaque publication d’une version balisée et à chaque pull request sur la branche principale du dépôt.
Les variables d’environnement globales définissent
REGISTRYsurdocker.io, ce qui signifie que nos images seront envoyées sur Docker Hub et disponibles depuis ce registre. Elles définissent égalementIMAGE_NAMEavec le nom d’utilisateur GitHub et le nom du dépôt. Si votre nom d’utilisateur Docker Hub est différent, vous devrez peut-être modifier cette valeur.
Définissons ensuite nos tâches, qui établiront le processus de création de l’image Docker, puis de sa publication.
Se connecter à Docker Hub, puis créer et publier l’image Docker
Nous devons ensuite effectuer les opérations suivantes :
Se connecter à Docker Hub. Pour cela, nous devons y créer un jeton, puis l’ajouter comme secret du dépôt dans les paramètres du dépôt GitHub.
Extraire les métadonnées de l’image Docker créée afin qu’elles soient accessibles au processus de création de l’image.
Envoyer l’image Docker créée sur Docker Hub.
Le fragment de code suivant permet d’effectuer ces opérations. Ajoutez-le au contenu du workflow créé à l’étape précédente :
Après avoir appliqué le fichier de workflow et l’avoir fusionné dans la branche principale, vous devriez obtenir une compilation réussie qui publiera une nouvelle image Docker sur Docker Hub :

Un problème connu : à l’heure actuelle, le dépôt Docker Hub sur lequel vous publiez l’image ne renseigne pas automatiquement une description et un fichier README adaptés, car cette fonctionnalité n’est pas disponible dans l’action GitHub officielle docker/build-and-push.
Si vous souhaitez ajouter cette fonctionnalité, les responsables recommandent l’action GitHub « Docker Hub Description » disponible sur la marketplace et proposent un exemple dans leur documentation que vous pouvez reprendre.
Récupérer des images Docker depuis le registre Docker Hub
Pour récupérer la nouvelle image Docker depuis Docker Hub, il vous suffit d’exécuter la commande habituelle docker pull , par exemple :
Vous publiez des images Docker vulnérables ?
Pourquoi s’arrêter là ? Avec Snyk, vous pouvez détecter, surveiller et même corriger les vulnérabilités dans les images Docker. Adoptez le workflow qui vous convient le mieux : utilisez la CLI ou importez directement des images Docker depuis Docker Hub pour surveiller leurs vulnérabilités de sécurité.
Mon collègue Eric Smalling a rédigé un guide détaillé des bonnes pratiques sur les workflows pilotés par les développeurs : analyse des Dockerfiles et des images, priorisation et correction, pour approfondir le sujet. Enfin, vous pouvez utiliser une action GitHub Snyk dans l’écosystème GitHub Actions pour détecter les vulnérabilités de sécurité dans les bibliothèques open source et les images de conteneurs.
Pour aller plus loin
Pour approfondir les bonnes pratiques de création d’images Docker, voici quelques ressources :
10 bonnes pratiques pour conteneuriser des applications web Node.js avec Docker
Docker pour les développeurs Node.js : 5 conseils pour ne pas compromettre votre sécurité
Si vous n’avez pas lu l’article précédent et souhaitez publier des images Docker sur GitHub Packages, découvrez comment publier des images Docker Node.js dans le registre GitHub Packages avec GitHub Actions.
La sécurité des conteneurs, pensée pour les développeurs
Snyk détecte et corrige automatiquement les vulnérabilités dans les images de conteneurs et les workloads Kubernetes.