- Remove SHA-based tags (preprod-<sha>) - Remove semver and PR tags - Keep only branch-based tag (preprod) - Keep latest tag for default branch - Add Portainer debugging documentation This ensures Portainer always pulls the stable branch tag instead of commit-specific tags.
7.6 KiB
🔍 Commandes de Debug Portainer - Status REJECTED
Problème
Les tâches Docker Swarm passent de pending à rejected, ce qui signifie que le conteneur ne peut pas démarrer.
Commandes de Diagnostic
1. Voir les logs détaillés du service
# Backend
docker service logs xpeditis_xpeditis-backend --tail=100 --follow
# Frontend
docker service logs xpeditis_xpeditis-frontend --tail=100 --follow
# Voir TOUTES les erreurs depuis le début
docker service logs xpeditis_xpeditis-backend --no-trunc
2. Inspecter le service pour voir l'erreur exacte
# Backend
docker service ps xpeditis_xpeditis-backend --no-trunc
# Frontend
docker service ps xpeditis_xpeditis-frontend --no-trunc
# Cela va montrer la raison du rejet dans la colonne "ERROR"
3. Vérifier l'état du service
docker service inspect xpeditis_xpeditis-backend --pretty
docker service inspect xpeditis_xpeditis-frontend --pretty
4. Tester manuellement le pull de l'image
# Teste si l'image peut être téléchargée
docker pull rg.fr-par.scw.cloud/weworkstudio/xpeditis-backend:preprod
docker pull rg.fr-par.scw.cloud/weworkstudio/xpeditis-frontend:preprod
# Si erreur "unauthorized" → problème de credentials
# Si erreur "manifest unknown" → l'image n'existe pas
# Si erreur "connection refused" → problème réseau
5. Vérifier les credentials du registry
# Vérifie si tu es login au registry
docker info | grep -A 5 "Registry"
# Login au registry Scaleway
docker login rg.fr-par.scw.cloud/weworkstudio
# Username: nologin
# Password: <REGISTRY_TOKEN>
🐛 Erreurs Communes et Solutions
Erreur 1: "no suitable node (insufficient resources)"
Cause: Pas assez de RAM/CPU sur le serveur Solution:
# Vérifie les ressources disponibles
docker node ls
docker node inspect <node-id> --pretty
# Libère de l'espace
docker system prune -a
Erreur 2: "image not found" ou "manifest unknown"
Cause: L'image n'existe pas dans le registry Solution:
- Vérifie que le CI/CD a bien terminé
- Vérifie sur Scaleway Console que les images existent
- Vérifie les tags disponibles
Erreur 3: "unauthorized: authentication required"
Cause: Docker Swarm n'a pas les credentials du registry Solution:
# Sur CHAQUE nœud du Swarm:
docker login rg.fr-par.scw.cloud/weworkstudio
# OU configure le registry dans Portainer:
# Portainer → Registries → Add registry
# Name: Scaleway
# URL: rg.fr-par.scw.cloud/weworkstudio
# Username: nologin
# Password: <REGISTRY_TOKEN>
Erreur 4: "pull access denied"
Cause: Token Scaleway expiré ou invalide Solution:
- Génère un nouveau token sur Scaleway Console
- Mets à jour le secret GitHub Actions
REGISTRY_TOKEN - Mets à jour les credentials dans Portainer
Erreur 5: "network xpeditis_internal not found"
Cause: Le réseau overlay n'existe pas Solution:
# Crée le réseau manuellement
docker network create --driver overlay --internal xpeditis_internal
# Redéploie la stack
docker stack deploy -c portainer-stack.yml xpeditis
Erreur 6: "traefik_network not found"
Cause: Le réseau Traefik externe n'existe pas Solution:
# Vérifie que Traefik est bien déployé
docker network ls | grep traefik
# Si le réseau n'existe pas, crée-le:
docker network create --driver overlay traefik_network
Erreur 7: "container failed to start"
Cause: L'application crash au démarrage Solution:
# Voir les logs de démarrage
docker service logs xpeditis_xpeditis-backend --tail=200
# Erreurs courantes:
# - Variables d'environnement manquantes
# - Database non accessible
# - Redis non accessible
# - Port déjà utilisé
🔧 Commandes de Réparation
Redémarrer complètement la stack
# Supprime la stack
docker stack rm xpeditis
# Attends 30 secondes que tout se nettoie
sleep 30
# Redéploie
docker stack deploy -c portainer-stack.yml xpeditis
Forcer le re-pull des images
# Update le service avec force
docker service update --force --image rg.fr-par.scw.cloud/weworkstudio/xpeditis-backend:preprod xpeditis_xpeditis-backend
docker service update --force --image rg.fr-par.scw.cloud/weworkstudio/xpeditis-frontend:preprod xpeditis_xpeditis-frontend
Vérifier la configuration de la stack
# Valide le fichier compose
docker stack config -c portainer-stack.yml
# Cela va afficher les warnings/erreurs de configuration
📊 Monitoring en Temps Réel
# Surveille les événements Docker
docker events --filter type=service
# Surveille les tasks qui échouent
watch -n 2 'docker service ps xpeditis_xpeditis-backend --no-trunc'
# Surveille tous les services de la stack
docker stack ps xpeditis --no-trunc --filter "desired-state=running"
🎯 Workflow de Debug Recommandé
-
Voir l'erreur exacte:
docker service ps xpeditis_xpeditis-backend --no-trunc -
Lire les logs:
docker service logs xpeditis_xpeditis-backend --tail=100 -
Tester le pull manuel:
docker pull rg.fr-par.scw.cloud/weworkstudio/xpeditis-backend:preprod -
Vérifier les dépendances (DB, Redis, MinIO):
docker service ls docker service ps xpeditis_xpeditis-db docker service ps xpeditis_xpeditis-redis docker service ps xpeditis_xpeditis-minio -
Redéployer si nécessaire:
docker service update --force xpeditis_xpeditis-backend
🔐 Configuration Registry dans Portainer
Via l'interface Portainer:
-
Registries → Add registry
-
Remplis:
- Name:
Scaleway Container Registry - Registry URL:
rg.fr-par.scw.cloud/weworkstudio - Authentication: ✅ ON
- Username:
nologin - Password:
<TON_REGISTRY_TOKEN>(le même que dans GitHub Secrets)
- Name:
-
Add registry
-
Stacks → xpeditis → Editor
-
En bas de la page, sélectionne le registry nouvellement ajouté
-
Update the stack
📝 Checklist de Vérification
- CI/CD GitHub Actions terminé avec succès
- Images existent sur Scaleway Container Registry
- Registry configuré dans Portainer avec credentials
- Réseau
traefik_networkexiste - PostgreSQL, Redis, MinIO démarrent correctement
- Variables d'environnement correctes dans la stack
- Pas d'erreur de pull dans
docker service ps - Logs de démarrage ne montrent pas d'erreur
🆘 Si Rien ne Fonctionne
-
Supprime et redéploie tout:
docker stack rm xpeditis sleep 30 docker system prune -f docker stack deploy -c portainer-stack.yml xpeditis -
Vérifie manuellement avec docker-compose (en local sur le serveur):
# Convertis la stack en docker-compose docker-compose -f portainer-stack.yml config # Lance en mode local pour debug docker-compose -f portainer-stack.yml up backend -
Contacte le support Scaleway si problème de registry
📞 Informations Importantes
- Registry Scaleway:
rg.fr-par.scw.cloud/weworkstudio - Images:
- Backend:
rg.fr-par.scw.cloud/weworkstudio/xpeditis-backend:preprod - Frontend:
rg.fr-par.scw.cloud/weworkstudio/xpeditis-frontend:preprod
- Backend:
- Username registry:
nologin - Password registry: Dans GitHub Secrets
REGISTRY_TOKEN