From 2505a36b1337b191d6a4630d82ce112e126a86d3 Mon Sep 17 00:00:00 2001 From: David Date: Tue, 18 Nov 2025 00:00:06 +0100 Subject: [PATCH] fix: simplify Docker image tags to only use branch name - Remove SHA-based tags (preprod-) - 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. --- .github/workflows/ci.yml | 8 - PORTAINER_DEBUG_COMMANDS.md | 291 ++++++++++++++++++++++++++++++++++++ 2 files changed, 291 insertions(+), 8 deletions(-) create mode 100644 PORTAINER_DEBUG_COMMANDS.md diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 819c239..03c436b 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -58,10 +58,6 @@ jobs: images: ${{ env.REGISTRY }}/xpeditis-backend tags: | type=ref,event=branch - type=ref,event=pr - type=semver,pattern={{version}} - type=semver,pattern={{major}}.{{minor}} - type=sha,prefix={{branch}}- type=raw,value=latest,enable={{is_default_branch}} - name: Build and push Backend Docker image @@ -130,10 +126,6 @@ jobs: images: ${{ env.REGISTRY }}/xpeditis-frontend tags: | type=ref,event=branch - type=ref,event=pr - type=semver,pattern={{version}} - type=semver,pattern={{major}}.{{minor}} - type=sha,prefix={{branch}}- type=raw,value=latest,enable={{is_default_branch}} - name: Build and push Frontend Docker image diff --git a/PORTAINER_DEBUG_COMMANDS.md b/PORTAINER_DEBUG_COMMANDS.md new file mode 100644 index 0000000..734742b --- /dev/null +++ b/PORTAINER_DEBUG_COMMANDS.md @@ -0,0 +1,291 @@ +# 🔍 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 + +```bash +# 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 + +```bash +# 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 + +```bash +docker service inspect xpeditis_xpeditis-backend --pretty +docker service inspect xpeditis_xpeditis-frontend --pretty +``` + +### 4. Tester manuellement le pull de l'image + +```bash +# 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 + +```bash +# 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: +``` + +--- + +## 🐛 Erreurs Communes et Solutions + +### Erreur 1: "no suitable node (insufficient resources)" +**Cause**: Pas assez de RAM/CPU sur le serveur +**Solution**: +```bash +# VĂ©rifie les ressources disponibles +docker node ls +docker node inspect --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**: +1. VĂ©rifie que le CI/CD a bien terminĂ© +2. VĂ©rifie sur Scaleway Console que les images existent +3. VĂ©rifie les tags disponibles + +### Erreur 3: "unauthorized: authentication required" +**Cause**: Docker Swarm n'a pas les credentials du registry +**Solution**: +```bash +# 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: +``` + +### Erreur 4: "pull access denied" +**Cause**: Token Scaleway expirĂ© ou invalide +**Solution**: +1. GĂ©nĂšre un nouveau token sur Scaleway Console +2. Mets Ă  jour le secret GitHub Actions `REGISTRY_TOKEN` +3. Mets Ă  jour les credentials dans Portainer + +### Erreur 5: "network xpeditis_internal not found" +**Cause**: Le rĂ©seau overlay n'existe pas +**Solution**: +```bash +# 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**: +```bash +# 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**: +```bash +# 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 + +```bash +# 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 + +```bash +# 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 + +```bash +# Valide le fichier compose +docker stack config -c portainer-stack.yml + +# Cela va afficher les warnings/erreurs de configuration +``` + +--- + +## 📊 Monitoring en Temps RĂ©el + +```bash +# 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Ă© + +1. **Voir l'erreur exacte**: + ```bash + docker service ps xpeditis_xpeditis-backend --no-trunc + ``` + +2. **Lire les logs**: + ```bash + docker service logs xpeditis_xpeditis-backend --tail=100 + ``` + +3. **Tester le pull manuel**: + ```bash + docker pull rg.fr-par.scw.cloud/weworkstudio/xpeditis-backend:preprod + ``` + +4. **VĂ©rifier les dĂ©pendances** (DB, Redis, MinIO): + ```bash + docker service ls + docker service ps xpeditis_xpeditis-db + docker service ps xpeditis_xpeditis-redis + docker service ps xpeditis_xpeditis-minio + ``` + +5. **RedĂ©ployer si nĂ©cessaire**: + ```bash + docker service update --force xpeditis_xpeditis-backend + ``` + +--- + +## 🔐 Configuration Registry dans Portainer + +Via l'interface Portainer: + +1. **Registries** → **Add registry** +2. Remplis: + - **Name**: `Scaleway Container Registry` + - **Registry URL**: `rg.fr-par.scw.cloud/weworkstudio` + - **Authentication**: ✅ ON + - **Username**: `nologin` + - **Password**: `` (le mĂȘme que dans GitHub Secrets) +3. **Add registry** + +4. **Stacks** → **xpeditis** → **Editor** +5. En bas de la page, sĂ©lectionne le registry nouvellement ajoutĂ© +6. **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_network` existe +- [ ] 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 + +1. **Supprime et redĂ©ploie tout**: + ```bash + docker stack rm xpeditis + sleep 30 + docker system prune -f + docker stack deploy -c portainer-stack.yml xpeditis + ``` + +2. **VĂ©rifie manuellement avec docker-compose** (en local sur le serveur): + ```bash + # 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 + ``` + +3. **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` +- **Username registry**: `nologin` +- **Password registry**: Dans GitHub Secrets `REGISTRY_TOKEN`