Aller au contenu principal

Documentation as Code - Transformez votre infrastructure en diagrammes soignés avec Python et Mermaid

Automatisez votre Documentation as Code en construisant une stack dockerisée Python et Mermaid CLI pour générer des diagrammes d'architecture dynamiques directement depuis votre code.

· 6 minutes de lecture
Voir la source
Christophe
Amoureux de Markdown, WSL et Docker ~ Curieux insatiable.
Google Gemini
AI Assistant
Cet article existe aussi en anglais — lire la version originale.

Traduction automatique

Cette traduction a été produite par une IA. Elle peut contenir des contresens ou des maladresses, en particulier sur les termes techniques. En cas de doute, consultez l'article de référence en anglais — c'est lui qui fait foi.

Documentation as Code : transformez votre infrastructure en diagrammes soignés avec Python et Mermaid

⚡
TL;DR
Une documentation écrite à la main devient obsolète dès que le code change. Pour éviter ça, adoptez la Documentation as Code : construisez une image Docker sur mesure équipée de Python et du CLI Mermaid pour générer automatiquement vos visuels. Avec de simples scripts Python qui analysent vos fichiers compose.yaml ou parcourent vos répertoires de projet, vous produisez dynamiquement du pseudocode Mermaid et le rendez directement en diagrammes PNG propres et à jour (mindmaps, camemberts, etc.) avec une seule commande.

J'aime la documentation, et quoi de plus inefficace que d'écrire de la doc pour des choses qui peuvent s'auto-documenter ?

Comme vous le savez peut-être, j'adore Docker et je fais presque tout de manière dockerisée. Donc, dans chacun de mes projets, il y a un fichier compose.yaml. Si je veux le documenter pour mes collègues, je pourrais écrire : Il y a trois services, un pour PHP, un pour Nginx, un pour PostgreSQL. Celui-là utilise un volume pour rendre les données persistantes sur le disque et blah blah blah. Le service Nginx publie sur le port xxx et la base de données est accessible via le port yyy. Je peux faire ça, bien sûr, mais n'y a-t-il pas une meilleure façon de procéder ? Et si j'ajoute un nouveau service ou que je change un numéro de port ? Ma documentation serait déjà obsolète, sauf si...

Voyons comment automatiser la documentation avec Docker, Python et Mermaid.

Le résultat​

Pointez le pipeline construit dans cet article vers un vrai compose.yaml, et une seule commande produit ceci :

La mindmap du compose

Cette image a été entièrement générée depuis le fichier compose.yaml — aucun dessin manuel, aucun outil de diagramme. Modifiez le YAML, relancez la commande, et le diagramme se met à jour tout seul.

Pourquoi Mermaid​

Du pseudocode en entrée, une image en sortie

Mermaid transforme un petit bloc de texte — son propre pseudocode — en diagramme rendu. Regardez cet exemple : à gauche, le pseudocode — lisible d'un coup d'œil ; à droite, l'image rendue.

Un exemple de timeline depuis le Mermaid Live Editor

Rendez-vous sur le Mermaid Live Editor et jouez avec les Sample Diagrams en bas à gauche pour découvrir tout ce que l'outil propose. Un script Python peut générer ce même pseudocode depuis n'importe quelle source lisible — un compose.yaml, une arborescence de dossiers, n'importe quelles données que vous avez déjà — et le CLI Mermaid le rend en PNG transparent.

Installation — créons l'image Docker​

Le Dockerfile que nous allons utiliser est celui-ci. Il est assez simple.

Pour construire cette image, lancez docker build -t yourself/docker-python-mermaid . dans votre terminal :

>user@machine: ~/yourproject

La taille finale de l'image sera d'environ 2 Go.

Construction de l'image

Préparer le rendu Mermaid​

Il nous faut deux fichiers externes pour le rendu.

Le premier va configurer Puppeteer :

Et le second va nous permettre d'utiliser notre propre mise en forme (police, couleurs, ...) lors du rendu du pseudocode en image :

Enfin, il nous faut un script Python​

Nous avons notre image Docker, nous avons nos fichiers de configuration. Il ne reste plus qu'à écrire un script Python qui va faire « quelque chose », générer du pseudocode Mermaid et rendre ce pseudocode sous forme d'image.

Que peut-on faire ? Tout ce que vous voulez ! Utilisez simplement votre moteur d'IA préféré et demandez-lui de créer le script Python correspondant.

Essayons deux choses :

Nous allons lire un compose.yaml Docker et créer une mindmap​

Le script ci-dessous va lire un fichier compose.yaml et générer une mindmap visuelle. Il existe aussi un outil prêt à l'emploi pour ça, voir Comment générer un graphe depuis compose.yaml, mais écrire le script nous-mêmes nous donne une liberté totale sur la sortie.

Voici le compose.yaml bidon que je vais utiliser comme exemple :

Maintenant, le meilleur moment : lancez cette commande pour produire l'image :

>user@machine: ~/yourproject

Une seule ligne de commande produit la mindmap montrée en haut de cet article. Cette image a été générée par le script Python mindmap.py après traitement de notre fichier compose.yaml. Nous pouvons maintenant modifier notre fichier YAML, relancer la commande docker run, et l'image sera mise à jour automatiquement.

Couleurs

Souvenez-vous : il suffit de modifier le fichier mermaid-config.json si vous voulez une autre palette de couleurs.

Plus d'exemples​

Un autre exemple​

Ce script va examiner notre structure de fichiers, identifier les fichiers présents et créer une mindmap également :

>user@machine: ~/yourproject

La mindmap project-dna

Cette mindmap ne se contente pas de montrer nos dossiers : elle regroupe les fichiers dans des catégories comme Code, Configuration, Assets, etc.

Dernier exemple​

Cette fois, un camembert :

>user@machine: ~/yourproject

Le camembert project-dna

Tous les fichiers nécessaires​

📦 Mise en place du projet : /tmp/mermaid
Aide

Besoin d'aide ? Cliquez sur le bouton « Aide » ci-dessus pour les instructions de mise en place.

Conclusion​

En combinant la puissance de parsing de Python avec l'élégance de rendu de Mermaid, nous avons transformé une documentation statique en un actif dynamique.

Si l'approche Documentation as Code vous plaît, jetez un œil à deux autres de mes articles qui vont dans la même direction : Docker - Des diagrammes en tant que code et Python - Générer des flux avec pydot. Et quand il n'y a aucun parser à écrire — une phrase qui décrit un processus, un format de config pour lequel je n'ai pas de script — ai-diagram demande le Mermaid à un LLM local.


🦋 Rejoignez la conversation sur BlueskyUn compte Bluesky gratuit est nécessaire pour aimer, repartager ou commenter. Ce bloc interroge l'API publique de Bluesky directement depuis votre navigateur (sans cookie, sans connexion) — votre adresse IP parvient donc aux serveurs de Bluesky dès que cette section se charge.

Chargement des commentaires…

Cet article vous a-t-il été utile ?
Avez-vous suivi les étapes de cet article ?