95 lines
3.1 KiB
Markdown
95 lines
3.1 KiB
Markdown
\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
|
|
testés, les paquets sont envoyés sur le serveur d'où ils seront distribués ; il
|
|
n'y a pas de service/docker à relancer).
|
|
|
|
À l'inverse, `youp0m` est à la fois un programme que l'on peut télécharger et
|
|
un service un ligne qu'il faut déployer pour mettre à jour facilement. Pour
|
|
simplifier le déploiement, nous utilisons des images Docker. Il faut cependant
|
|
les générer ...
|
|
|
|
|
|
## Mise en place du registre
|
|
|
|
*Si vous avez choisi Gitlab, vous pouvez utiliser directement le registre
|
|
Docker intégré. Si vous utilisez Gitea, continuez cette section.*
|
|
|
|
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
|
|
comme suit :
|
|
|
|
<div lang="en-US">
|
|
```bash
|
|
docker run --rm -d --name registry --network droneci -p 5000:5000 registry:2
|
|
```
|
|
</div>
|
|
|
|
Vous trouverez davantage d'informations
|
|
[ici](https://docs.docker.com/registry/deploying/).
|
|
|
|
Vous pouvez tester son bon fonctionnement avec la commande suivante :
|
|
|
|
<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
|
|
publication de l'image Docker. Cela se fait au moyen du plugin suivant :
|
|
<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
|
|
commande suivante :
|
|
|
|
<div lang="en-US">
|
|
```bash
|
|
docker run --rm -p 8080:8080 localhost:5000/youp0m
|
|
```
|
|
</div>
|
|
|
|
On notera que ceci est possible exclusivement parce que le registre
|
|
`localhost:5000` est considéré non-sûr par défaut. C'est à dire qu'il n'a pas
|
|
besoin de certificat TLS sur sa connexion HTTP pour être utilisé.\newline
|
|
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/).
|
|
|
|
|
|
## Suite du déploiement
|
|
|
|
Pour aujourd'hui, nous en resterons là pour le déploiement, car nous n'avons
|
|
pas d'environnement de production sur lequel déployer notre service.
|
|
|
|
Vous pouvez néamnoins tester les plugins
|
|
[`scp`](http://plugins.drone.io/appleboy/drone-scp/) ou
|
|
[`ansible`](http://plugins.drone.io/drone-plugins/drone-ansible/), si vous avez
|
|
une machine virtuelle avec une connexion SSH. N'hésitez pas à l'ajouter à votre
|
|
`.droneci.yml`.
|
|
|
|
|
|
## Profitons !
|
|
|
|
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
|
|
action !
|