xpeditis2.0/docs/deployment/PORTAINER_CRASH_DEBUG.md
David c19af3b119
Some checks failed
CI/CD Pipeline / Backend - Build, Test & Push (push) Failing after 58s
CI/CD Pipeline / Frontend - Build, Test & Push (push) Failing after 5m55s
CI/CD Pipeline / Integration Tests (push) Has been skipped
CI/CD Pipeline / Deployment Summary (push) Has been skipped
CI/CD Pipeline / Deploy to Portainer (push) Has been skipped
CI/CD Pipeline / Discord Notification (Success) (push) Has been skipped
CI/CD Pipeline / Discord Notification (Failure) (push) Has been skipped
docs: reorganiser completement la documentation dans docs/
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>
2025-12-22 15:45:51 +01:00

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 exister
  • docker 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