2020-10-28 22:16:34 +00:00
|
|
|
|
\newpage
|
|
|
|
|
|
|
|
|
|
Publier une image Docker
|
|
|
|
|
========================
|
|
|
|
|
|
|
|
|
|
Toutes les tâches de publication peuvent s'assimiler à des tâches de
|
|
|
|
|
déploiement continu. C'est en particulier le cas lorsque le produit de
|
|
|
|
|
compilation sera simplement publié et qu'il n'y a pas de service à mettre à
|
|
|
|
|
jour ensuite (par exemple, dans le cas de Firefox ou de LibreOffice, une fois
|
2022-02-24 19:43:43 +00:00
|
|
|
|
testés, les paquets sont envoyés sur le serveur d'où ils seront distribués ; il
|
2020-10-28 22:16:34 +00:00
|
|
|
|
n'y a pas de service/docker à relancer).
|
|
|
|
|
|
2022-02-24 19:43:43 +00:00
|
|
|
|
À l'inverse, `youp0m` est à la fois un programme que l'on peut télécharger et
|
|
|
|
|
un service qu'il faut déployer pour le mettre à jour. Pour simplifier le
|
|
|
|
|
déploiement, nous utilisons une image Docker. Il faut cependant la générer ...
|
2020-10-28 22:16:34 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## Mise en place du registre
|
|
|
|
|
|
2021-11-19 23:00:30 +00:00
|
|
|
|
::::: {.more}
|
|
|
|
|
Si vous avez choisi Gitlab, vous pouvez utiliser directement le registre
|
|
|
|
|
Docker intégré. Si vous utilisez Gitea, continuez cette section.
|
|
|
|
|
:::::
|
2020-10-28 22:16:34 +00:00
|
|
|
|
|
|
|
|
|
Afin de disposer de notre propre registre Docker sur lequel publier nos images,
|
|
|
|
|
nous allons utiliser l'image de registre fournie par Docker. Elle se lance
|
2022-02-24 19:43:43 +00:00
|
|
|
|
comme suit :
|
2020-10-28 22:16:34 +00:00
|
|
|
|
|
|
|
|
|
<div lang="en-US">
|
|
|
|
|
```bash
|
2022-05-04 09:18:16 +00:00
|
|
|
|
docker run --rm -d --name registry --network droneci -p 5000:5000 \
|
|
|
|
|
registry:2
|
2020-10-28 22:16:34 +00:00
|
|
|
|
```
|
|
|
|
|
</div>
|
|
|
|
|
|
2021-11-19 23:00:30 +00:00
|
|
|
|
Vous trouverez davantage d'informations pour le déploiement
|
2020-10-28 22:16:34 +00:00
|
|
|
|
[ici](https://docs.docker.com/registry/deploying/).
|
|
|
|
|
|
2021-11-19 23:00:30 +00:00
|
|
|
|
Nous pouvons tester le bon fonctionnement de notre registre avec la commande
|
2022-02-24 19:43:43 +00:00
|
|
|
|
suivante :
|
2020-10-28 22:16:34 +00:00
|
|
|
|
|
|
|
|
|
<div lang="en-US">
|
|
|
|
|
```bash
|
|
|
|
|
42sh$ curl http://localhost:5000/v2/
|
|
|
|
|
{}
|
|
|
|
|
```
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## Publication de l'image
|
|
|
|
|
|
|
|
|
|
Une fois le registre démarré, il ne nous reste plus qu'à ajouter une étape de
|
2022-02-24 19:43:43 +00:00
|
|
|
|
publication de l'image Docker. Cela se fait au moyen du plugin suivant :\
|
2020-10-28 22:16:34 +00:00
|
|
|
|
<http://plugins.drone.io/drone-plugins/drone-docker/>.
|
|
|
|
|
|
|
|
|
|
Sans plus de configuration, le registre que nous avons démarré
|
|
|
|
|
n'attend pas d'authentification. Et comme il n'a pas de certificat TLS
|
|
|
|
|
pour utiliser `https`, il est nécessaire de définir l'option
|
|
|
|
|
`insecure` à `true`.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## Test de l'image
|
|
|
|
|
|
|
|
|
|
Sur l'hôte, nous pouvons tester que l'image a bien été publiée grâce à la
|
2022-02-24 19:43:43 +00:00
|
|
|
|
commande suivante :
|
2020-10-28 22:16:34 +00:00
|
|
|
|
|
|
|
|
|
<div lang="en-US">
|
|
|
|
|
```bash
|
|
|
|
|
docker run --rm -p 8080:8080 localhost:5000/youp0m
|
|
|
|
|
```
|
|
|
|
|
</div>
|
|
|
|
|
|
2022-04-08 20:39:14 +00:00
|
|
|
|
::::: {.question}
|
2020-10-28 22:16:34 +00:00
|
|
|
|
On notera que ceci est possible exclusivement parce que le registre
|
2022-05-12 00:46:31 +00:00
|
|
|
|
`localhost:5000` est considéré non-sûr par défaut. C'est-à-dire qu'il n'a pas
|
2021-09-21 09:43:21 +00:00
|
|
|
|
besoin de certificat TLS sur sa connexion HTTP pour être utilisé.\
|
2020-10-28 22:16:34 +00:00
|
|
|
|
Si on avait dû utiliser un autre nom de domaine, il aurait fallu
|
|
|
|
|
[l'ajouter à la liste des
|
|
|
|
|
`insecure-registries`](https://docs.docker.com/registry/insecure/).
|
2021-11-19 23:00:30 +00:00
|
|
|
|
:::::
|
2020-10-28 22:16:34 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## Suite du déploiement
|
|
|
|
|
|
2022-06-26 19:08:01 +00:00
|
|
|
|
Nous en resterons là pour le déploiement, car nous n'avons
|
2020-10-28 22:16:34 +00:00
|
|
|
|
pas d'environnement de production sur lequel déployer notre service.
|
|
|
|
|
|
2021-11-19 23:00:30 +00:00
|
|
|
|
Vous pouvez néanmoins tester les plugins
|
2020-10-28 22:16:34 +00:00
|
|
|
|
[`scp`](http://plugins.drone.io/appleboy/drone-scp/) ou
|
2021-11-19 23:00:30 +00:00
|
|
|
|
[`ansible`](http://plugins.drone.io/drone-plugins/drone-ansible/) si vous avez
|
2020-10-28 22:16:34 +00:00
|
|
|
|
une machine virtuelle avec une connexion SSH. N'hésitez pas à l'ajouter à votre
|
|
|
|
|
`.droneci.yml`.
|
|
|
|
|
|
|
|
|
|
|
2022-02-24 19:43:43 +00:00
|
|
|
|
## Profitons !
|
2020-10-28 22:16:34 +00:00
|
|
|
|
|
|
|
|
|
Sonarqube a repéré quelques erreurs dans le code de `youp0m`, essayez de les
|
|
|
|
|
corriger, et publiez une nouvelle version, pour observer toute la chaîne en
|
2022-02-24 19:43:43 +00:00
|
|
|
|
action !
|