Duniter: génération du livrable Docker dans la CI de Duniter

Merci @sveyret, hier et aujourd’hui je me suis basé sur ton Dockerfile et ton script duniter.sh pour générer le livrable Docker directement depuis le dépôt de Duniter : Feature/docker (!1291) · Merge requests · nodes / typescript / duniter · GitLab

Cette approche a plusieurs avantages, cela permet par exemple de générer une image docker avec le tag “dev” qui sera regénérée et republiée a chaque avancée de la branche dev.

D’ailleurs j’aimerais bien que l’on déploie un noeud Duniter dev.duniter.org sur la g1-test qui soit redéployé a chaque changement sur la branche dev.

J’ai décidé de prendre le taureau par les cornes concernant cette histoire d’image Docker car avec l’ajout de Rust dans Duniter tous les livrables sont impactés, y compris l’image Docker, je me suis donc dit: quitte à devoir gérer ça, autant intégrer le build de l:'image docker dans la CI de Duniter en même temps :slight_smile:


En conclusion, a partir de Duniter 1.8, l’image docker officielle sera générée et publiée en même temps que les paquets debian, dans la CI du dépôt Duniter directement :slight_smile:

4 Likes

Super ! :slight_smile:

Tu peux aussi regarder le .gitlab-ci.yml de ce projet, car il contient ce qu’il faut pour automatiquement diffuser l’image Docker, y compris sur le dépôt Docker officiel.

1 Like

Pour ceux qui veulent tester la version de dev de Duniter dans Docker, voici comme faire : [TUTO] Tester la version de développement de Duniter dans docker

Et plus généralement, pour de l’aide sur « Duniter dans Docker », j’ai intégré dans le dépôt de Duniter l’excellente doc rédigée par @sveyret : https://git.duniter.org/nodes/typescript/duniter/-/blob/dev/doc/docker.md

2 Likes

Oui je me suis pas gêné pour le faire, merci encore pour ce taff très bien documenté :slight_smile: (ça manquais juste de visibilité, perso j’avais vu passer que le projet de fabwice, qui est effectivement quasiment identique).

1 Like

En fait, l’utilisation de Docker est déjà dans la documentation officielle de Duniter :

Sauf que visiblement, les mises à jour que j’ai faites n’ont pas été validées :
https://git.duniter.org/websites/website_fr/-/merge_requests/70
https://git.duniter.org/websites/website_en/-/merge_requests/37

1 Like

Un message a été scindé en un nouveau sujet : Cycle de la documentation du projet Duniter : dans le dépôt git, sur le site web

Comme il vaut mieux battre le fer quand il est chaud. Pour optimiser au maximum l’image docker, il est possible de créer l’image avec Ansible. L’intérêt est de ne pas passer trop de temps sur le langage Dockerfile, mais de pérenniser un savoir faire dans Ansible. Le résultat sera une image avec moins de layers, donc moins volumineuse et un code plus facile à base de config Ansible, plus souple à faire évoluer.

Intéressant !

Perso je maîtrise très bien le langage Dockerfile depuis des années, je l’utilise à mon boulot UNL, je l’ai utilisé pour la mise en place de la CI de beaucoup de projets sur le gitlab. A contrario je n’ai jamais touché à Ansible de ma vie et ne souhaite pas m’y mettre, je préfère éviter de me disperser.
De plus, l’image docker de Duniter fonctionne, l’allégée n’est pour moi pas une priorité.

Cependant, si quelqu’un veut le faire je me ferai un plaisir de reviewer sa MR et de tester la nouvelle image :slight_smile:

Le Dockerfile dans le dossier release/docker: https://git.duniter.org/nodes/typescript/duniter/-/blob/dev/release/docker/Dockerfile

S’il y a besoin d’ajouter d’autres fichiers, merci de les placer dans le dossier release/docker également :slight_smile:

Oui, bien entendu, cela n’a de sens que pour quelqu’un qui veut pérenniser sa config Ansible sur Docker. Pas l’inverse.

J’ai fait un sujet dédié a Ansible qui me paraît utile pour les machines 32bits.

Je compte aussi décliner l’image docker en 32bits !

1 Like