Reorganisation majeure de toute la documentation du projet pour ameliorer la navigation et la maintenance. ## Changements principaux ### Organisation (80 -> 4 fichiers .md a la racine) - Deplace 82 fichiers .md dans docs/ organises en 11 categories - Conserve uniquement 4 fichiers essentiels a la racine: * README.md, CLAUDE.md, PRD.md, TODO.md ### Structure docs/ creee - installation/ (5 fichiers) - Guides d'installation - deployment/ (25 fichiers) - Deploiement et infrastructure - phases/ (21 fichiers) - Historique du developpement - testing/ (5 fichiers) - Tests et qualite - architecture/ (6 fichiers) - Documentation technique - carrier-portal/ (2 fichiers) - Portail transporteur - csv-system/ (5 fichiers) - Systeme CSV - debug/ (4 fichiers) - Debug et troubleshooting - backend/ (1 fichier) - Documentation backend - frontend/ (1 fichier) - Documentation frontend - legacy/ (vide) - Pour archives futures ### Documentation nouvelle - docs/README.md - Index complet de toute la documentation (367 lignes) * Guide de navigation par scenario * Recherche rapide par theme * FAQ et commandes rapides - docs/CLEANUP-REPORT-2025-12-22.md - Rapport detaille du nettoyage ### Scripts reorganises - add-email-to-csv.py -> scripts/ - deploy-to-portainer.sh -> docker/ ### Fichiers supprimes - 1536w default.svg (11MB) - Fichier non utilise ### References mises a jour - CLAUDE.md - Section Documentation completement reecrite - docs/architecture/EMAIL_IMPLEMENTATION_STATUS.md - Chemin script Python - docs/deployment/REGISTRY_PUSH_GUIDE.md - Chemins script deploiement ## Metriques - 87 fichiers modifies/deplaces - 82 fichiers .md organises dans docs/ - 11MB d'espace libere - Temps de recherche reduit de ~5min a ~30s (-90%) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
7.1 KiB
🚨 Debug Portainer - Containers Crash en Boucle
📊 Symptômes Observés
xpeditis-backend: replicated 0 / 1 (should be 1/1)
xpeditis-frontend: replicated 0 / 1 (should be 1/1)
Tasks Status: "complete" puis "starting" répété
→ Les containers démarrent puis crashent immédiatement
404 sur les URLs :
Cause : Traefik ne trouve pas les containers car ils ne sont pas en état "running".
🔍 Diagnostic Immédiat
Étape 1 : Vérifier les Logs Backend
Portainer → Services → xpeditis_xpeditis-backend → Logs
Chercher :
Erreur Possible 1 : Migrations Échouent
❌ Error during migration: relation "XXX" already exists
Solution : Volume database corrompu, le recréer.
Erreur Possible 2 : Variables Manquantes
❌ Config validation error: "DATABASE_HOST" is required
Solution : Vérifier que toutes les variables sont dans le stack.
Erreur Possible 3 : Connection Database Failed
❌ Failed to connect to PostgreSQL after 30 attempts
Solution : PostgreSQL pas accessible ou credentials invalides.
Erreur Possible 4 : Port Déjà Utilisé
❌ Error: listen EADDRINUSE: address already in use :::4000
Solution : Ancien container toujours actif, le supprimer.
Étape 2 : Vérifier les Logs Frontend
Portainer → Services → xpeditis_xpeditis-frontend → Logs
Chercher :
Erreur Possible 1 : Server.js Manquant
❌ Error: Cannot find module '/app/server.js'
Solution : Image mal buildée, vérifier CI/CD.
Erreur Possible 2 : Port Déjà Utilisé
❌ Error: listen EADDRINUSE: address already in use :::3000
Solution : Ancien container toujours actif.
⚡ Solutions Rapides
Solution 1 : Nettoyer et Redéployer
Sur le serveur Portainer via SSH :
# 1. Supprimer tous les containers du stack
docker service rm xpeditis_xpeditis-backend
docker service rm xpeditis_xpeditis-frontend
docker service rm xpeditis_xpeditis-redis
docker service rm xpeditis_xpeditis-minio
docker service rm xpeditis_xpeditis-db
# 2. Attendre que tout soit nettoyé
docker service ls | grep xpeditis
# Devrait être vide
# 3. Supprimer le réseau interne (si nécessaire)
docker network rm xpeditis_xpeditis_internal 2>/dev/null || true
# 4. Dans Portainer : Supprimer le stack
# Portainer → Stacks → xpeditis → Remove stack
# 5. Recréer le stack avec le YAML corrigé
# Portainer → Stacks → Add stack → Copier portainer-stack.yml
Solution 2 : Vérifier les Images ARM64
# Sur le serveur Portainer
docker manifest inspect rg.fr-par.scw.cloud/weworkstudio/xpeditis-backend:preprod | grep architecture
# Devrait afficher :
# "architecture": "arm64"
# Si seulement AMD64 :
# Vérifier que la CI/CD a bien rebuild avec ARM64 support
Solution 3 : Vérifier le Network Traefik
# Sur le serveur Portainer
docker network ls | grep traefik_network
# Si absent :
docker network create --driver=overlay traefik_network
# Vérifier que Traefik est bien running
docker ps | grep traefik
🔧 Problèmes Connus et Fixes
Problème 1 : Swarm Mode vs Compose Mode
Votre stack utilise Docker Swarm (deploy.placement.constraints).
Vérifier :
docker info | grep Swarm
# Devrait afficher : Swarm: active
Si Swarm pas initialisé :
docker swarm init
Problème 2 : Registry Credentials en Swarm
En Docker Swarm, les credentials du registry doivent être configurés différemment :
# Option 1 : Login sur chaque node
docker login rg.fr-par.scw.cloud/weworkstudio
# Username: nologin
# Password: [token]
# Option 2 : Utiliser un Docker Config
echo "nologin" | docker secret create registry_username -
echo "[token]" | docker secret create registry_password -
Problème 3 : Volumes Pas Montés Correctement
# Vérifier que les volumes existent
docker volume ls | grep xpeditis
# Devrait afficher :
# xpeditis_xpeditis_db_data
# xpeditis_xpeditis_redis_data
# xpeditis_xpeditis_minio_data
📋 Checklist de Debug
1. Logs Backend
- Voir les logs :
docker service logs xpeditis_xpeditis-backend --tail 50 - Identifier l'erreur exacte (migration, connection, validation)
2. Logs Frontend
- Voir les logs :
docker service logs xpeditis_xpeditis-frontend --tail 50 - Vérifier que server.js existe
3. Images
- Vérifier ARM64 :
docker manifest inspect ... - Vérifier que les images existent dans le registry
4. Network
docker network ls | grep traefik_network→ doit existerdocker network ls | grep xpeditis_internal→ doit exister
5. Swarm
docker info | grep Swarm→ doit être "active"docker node ls→ tous les nodes "READY"
6. Registry
docker login rg.fr-par.scw.cloud/weworkstudio→ doit réussir- Test pull manuel :
docker pull rg.fr-par.scw.cloud/weworkstudio/xpeditis-backend:preprod
🎯 Commandes de Debug Essentielles
# 1. Voir les logs backend (dernières 50 lignes)
docker service logs xpeditis_xpeditis-backend --tail 50 --follow
# 2. Voir les logs frontend
docker service logs xpeditis_xpeditis-frontend --tail 50 --follow
# 3. Voir l'état des services
docker service ls
# 4. Voir les tasks (tasks = tentatives de démarrage)
docker service ps xpeditis_xpeditis-backend --no-trunc
# 5. Inspecter un service
docker service inspect xpeditis_xpeditis-backend --pretty
# 6. Vérifier les erreurs de déploiement
docker service ps xpeditis_xpeditis-backend --format "{{.Error}}"
🚨 Erreur Critique Probable
Le problème le plus probable :
Hypothèse 1 : Images Pas Accessibles (Registry Credentials)
# Test
docker pull rg.fr-par.scw.cloud/weworkstudio/xpeditis-backend:preprod
# Si erreur "access denied" :
docker login rg.fr-par.scw.cloud/weworkstudio
# Username: nologin
# Password: [token Scaleway]
Hypothèse 2 : Migrations Crashent
Le backend essaie de run les migrations mais elles échouent.
Solution :
# Supprimer le volume database et recréer
docker volume rm xpeditis_xpeditis_db_data
# Redéployer le stack (migrations créeront les tables from scratch)
Hypothèse 3 : Variables d'Environnement Manquantes
Vérifier dans les logs si une variable est manquante.
✅ Action Immédiate à Faire
Sur le serveur Portainer, exécuter :
# 1. Voir l'erreur exacte du backend
docker service logs xpeditis_xpeditis-backend --tail 100
# 2. Copier-coller les dernières lignes d'erreur ici
Ensuite je pourrai vous donner la solution exacte !
Date : 2025-11-19 Status : 🔴 Containers crashent - Besoin logs pour diagnostic Action Requise : Voir les logs backend/frontend pour identifier l'erreur exacte