En utilisant la fonction ‘Intégration GitHub‘ de Docker.Hub, il est possible de programmer la reconstruction automatique d’une image.
À la fin de cet atelier, nous serons capable d’automatiser un ‘docker build’ suite à un ‘push’ vers un dépôt GitHub.
Allez Hop, à l’apprentissage!
Action 1.1 – Créer un nouveau dossier, avec un fichier README.me
$ mkdir docker.hub+github $ echo "## Démo d'intégration docker.hub+github" > docker.hub+github/README.md $ git init docker.hub+github $ cd docker.hub+github $ ls -la drwxr-xr-x 9 alain staff 288 26 avr 11:00 .git -rw-r--r-- 1 alain staff 42 26 avr 10:59 README.md
Action 1.2 – Ajouter le fichier ‘README.md‘ à la scène – ‘stage’ – de git:
$ git add . $ git status On branch master No commits yet Changes to be committed: (use "git rm --cached <file>..." to unstage) new file: README.md
Action 1.3 – Renseigner le premier ‘Commit’
$ git commit -m "Premier commit du projet" [master (root-commit) aa20111] Premier commit du projet 1 file changed, 1 insertion(+) create mode 100644 README.md
Action 1.4 – Créer le projet sur GitHub:
Action 1.5 – Prendre en note les directives de GitHub:
Action 1.6 – Pousser (push) le projet vers GitHub:
git branch -M main git remote add origin https://github.com/ve2cuy/docker.hub.github.git git push -u origin main --- # Résultat: Enumerating objects: 3, done. Counting objects: 100% (3/3), done. Writing objects: 100% (3/3), 266 bytes | 266.00 KiB/s, done. Total 3 (delta 0), reused 0 (delta 0) To https://github.com/ve2cuy/docker.hub.github.git * [new branch] main -> main Branch 'main' set up to track remote branch 'main' from 'origin'.
Note: Il est possible d’avoir besoin de fournir votre identification GitHub si vous n’êtes pas déjà connecté à votre compte GitHub. Vous pouvez utiliser GitHub Desktop pour l’authentification.
Action 1.7 – Vérifier le résultat du ‘push‘ sur GitHub:
Action 2.1 – Renseigner le fichier Dockerfile suivant:
FROM php:8.0.3-apache-buster COPY index.php /var/www/html/
Action 2.2 – Renseigner le fichier index.php suivant:
<?php // À copier dans le dossier /var/www/html de l'image httpd echo <<<FDL <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <h1><center><span style="color: rgb(215, 112, 16);">420-4D4: DockerHub+GitHub</span></center></h1> <h2><center><span style="color: rgb(34, 139, 60);">Exemple d'une image de conteneur</span></center></h2> <h2><center><span style="color: rgb(34, 139, 60);">Reconstruite et publiée automatiquement</span></center></h2> <h3><center><span style="color: rgb(165, 8, 8);">Je suis la version 1.0 de l'image</span></center></h2> <hr/><br/><br/><br/> <h1><center>Vous avez été servis par: <span style="color: rgb(165, 8, 8);"> FDL; echo gethostname() . "</span></center></h1>"; ?> <br/><br/><br/> <hr> <h6 style="text-align:right; padding-right:1em;">Document préparé par Alain Boudreault - 2021.04.26</h6>
Action 2.3 – Tester l’image
docker build -t a_effacer . docker run --rm -p 80:80 a_effacer # Tester dans un fureteur ...
Pré-requis: Lier les comptes hub.docker et GitHub.
Action 3.1 – À partir de votre compte hub.docker, sélectionner l’option « Account Settings »
Action 3.1.2 –
Action 3.1.3 – Au besoin, se connecter à GitHub
Action 3.1.4 – Vérifier la liaison des comptes
Action 3.2 – Créer un nouveau dépôt dans hub.docker nommé docker-hub-github
Action 3.3 – Renseigner les instructions du ‘build’ automatique
Note: Attention au nom de la source:
Action 4.1 – Actualiser la scène git puis publier sur GitHub
$ git add . git status On branch main Your branch is up to date with 'origin/main'. Changes to be committed: (use "git restore --staged <file>..." to unstage) new file: Dockerfile new file: index.php --- $ git commit -m "Version 1.0 du projet" [main 91f4a30] Version 1.0 du projet 2 files changed, 20 insertions(+) create mode 100644 Dockerfile create mode 100644 index.php --- $ git push Enumerating objects: 5, done. Counting objects: 100% (5/5), done. Delta compression using up to 8 threads Compressing objects: 100% (4/4), done. Writing objects: 100% (4/4), 830 bytes | 830.00 KiB/s, done. Total 4 (delta 0), reused 0 (delta 0) To https://github.com/ve2cuy/docker.hub.github.git aa20111..91f4a30 main -> main
Action 4.2 – Vérifier l’état du ‘build‘ dans hub.docker
Après un certain délai:
Résultat: Une nouvelle image:latest est maintenant disponible sur hub.docker.
Action 4.2.1 – Tester l’image
docker run --rm -p 80:80 alainboudreault/docker-hub-github
Action 4.3 – Modifier le code source du fichier index.php
# Remplacer <h3><center><span style="color: rgb(165, 8, 8);">Je suis la version 1.0 de l'image # Par <h3><center><span style="color: rgb(165, 8, 8);">Je suis la version 1.1 de l'image
Action 4.3.1 – Publier la modification sur GitHub
$ git add . $ git commit -m "Passage à la version 1.1" $ git push --- Enumerating objects: 5, done. Counting objects: 100% (5/5), done. Delta compression using up to 8 threads Compressing objects: 100% (3/3), done. Writing objects: 100% (3/3), 309 bytes | 309.00 KiB/s, done. Total 3 (delta 2), reused 0 (delta 0) remote: Resolving deltas: 100% (2/2), completed with 2 local objects. To https://github.com/ve2cuy/docker.hub.github.git 8c010bd..ca31f89 main -> main
Action 4.4 – Vérifier l’état de reconstruction de l’image sur docker.hub
Action 4.5 – Tester la nouvelle image
docker run --rm -p 80:80 --pull always alainboudreault/docker-hub-github
http://localhost/
Action 5.0 – Pré-requis: Effacer le projet sur docker.hub
Nous allons maintenant recréer le dépôt sur docker.hub.
Action 5.1 – Renseigner une expression RegEx pour le nom de la version
Action 5.1.2 – Vérifier le panneau de ‘Builds’ automatiques:
Note: Il y a maintenant deux projets ‘Automated Builds‘;
Action 5.2 – Modifier les fichiers « Dockerfile » et « index.php »
FROM php:8.0.3-apache-buster LABEL maintainer="Alain Boudreault"\ name="docker_dockerhub"\ version="2.0" COPY index.php /var/www/html/
<h3><center><span style="color: rgb(165, 8, 8);">Je suis la version 2.0 de l'image
Action 5.3 – Publier sur GitHub sous version 2.0
$ git add . $ git commit -m "Passage à la version 2.0" $ git push
Action 5.3.1 – Créer un tag pour le dépôt GitHub
a)
b)
c)
d)
e) Résultat finale:
Action 5.4 – Vérifier l’état des ‘builds’ du projet sur hub.docker
Action 5.4.1 – Vérifier la page principale de l’image sur hub.docker
Action 5.5 – Tester l’image de la version v2.0
docker run --rm -p 80:80 alainboudreault/docker-hub-github:v2.0