Un exemple concret de debug assisté par IA sur un nœud Duniter — je partage tel quel, écrit par l’assistant qui a mené l’investigation avec moi.
Claude:
Un des conteneurs Docker de mon nœud Duniter v2s (le serveur GraphQL PostGraphile, service graphql-g1v2 / image duniter/squid-graphile-g1, géré via Portainer) était marqué unhealthy depuis toujours dans Docker. Avant de conclure à un vrai problème de service, on a creusé pour comprendre si c’était réel ou juste un mauvais réglage.
Verdict : faux positif. Le service GraphQL fonctionnait très bien — les logs montraient des centaines de requêtes réelles (Cesium, apps mobiles, navigateurs) servies avec du 200 OK en continu. Le problème venait uniquement du healthcheck Docker lui-même, pour deux raisons cumulées :
Le healthcheck appelait curl, un outil qui n’est pas installé dans l’image du serveur GraphQL (seuls wget et node y sont présents).
Même en réglant ça, localhost dans ce conteneur résout en IPv6 (::1) en priorité, alors que le service n’écoute qu’en IPv4 (0.0.0.0:5678) — donc une connexion refusée aussi, indépendamment du premier problème.
En creusant plus loin, on est allé lire le code source du serveur GraphQL (dépôt nodes/duniter-squid sur git.duniter.org ) pour confirmer le bon chemin à tester, et corriger le healthcheck avec un outil réellement disponible dans l’image (node) et une adresse explicite en IPv4 :
healthcheck:
test: ["CMD", "node", "-e", "require('http').get('http://127.0.0.1:5678/graphql',res=>process.exit(res.statusCode===200?0:1)).on('error',()=>process.exit(1))"]
interval: 30s
timeout: 10s
retries: 3
start_period: 60s
Appliqué et redéployé via Portainer : le conteneur est passé de unhealthy (3 jours en échec) à healthy, confirmé stable sur plusieurs cycles de vérification.
Comme le fichier docker-compose.yml officiel du projet duniter-squid ne fournit aucun healthcheck pour ce service (donc n’importe qui déployant ce compose et voulant en ajouter un manuellement risque de retomber sur les deux mêmes pièges), on a proposé le correctif en amont :
Merge request : fix(compose): add working healthcheck for the graphile GraphQL server (!37) · Merge requests · nodes / duniter-squid · GitLab
Si vous faites tourner ce même stack (squid g1v2/gtest) via Portainer ou Docker Compose et que vous avez ce même statut “unhealthy” — ou si vous aviez ajouté vous-même un healthcheck curl similaire — ça vaut le coup de vérifier.
Tu pourras fix le healthcheck sur squid si tu veux, c’est une micro MR ^^
Merge request : fix(compose): add working healthcheck for the graphile GraphQL server (!37) · Merge requests · nodes / duniter-squid · GitLab
Si vous faites tourner ce même stack (squid g1v2/gtest) via Portainer ou Docker Compose et que vous avez ce même statut “unhealthy” — ou si vous aviez ajouté vous-même un healthcheck curl similaire — ça vaut le coup de vérifier.
C’est fusionné
Je trouverais sympa d’avoir un petit message humain dans la MR et de mettre ce qui est généré par Claude en citation.
ok, j’ai fait ça rapidement avant de partir pour l’Agora, je n’ai pas pris le temps d’aller sur git pour vérifier et corriger, je n’avais pas redis à Claude de me soumettre le message… Ce sera mieux les prochaines fois ! Merci