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
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>
295 lines
7.1 KiB
Markdown
295 lines
7.1 KiB
Markdown
# 🚨 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** :
|
|
- https://app.preprod.xpeditis.com → 404
|
|
- https://api.preprod.xpeditis.com → 404
|
|
|
|
**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** :
|
|
|
|
```bash
|
|
# 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
|
|
|
|
```bash
|
|
# 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
|
|
|
|
```bash
|
|
# 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** :
|
|
```bash
|
|
docker info | grep Swarm
|
|
# Devrait afficher : Swarm: active
|
|
```
|
|
|
|
**Si Swarm pas initialisé** :
|
|
```bash
|
|
docker swarm init
|
|
```
|
|
|
|
---
|
|
|
|
### Problème 2 : Registry Credentials en Swarm
|
|
|
|
En Docker Swarm, les credentials du registry doivent être configurés **différemment** :
|
|
|
|
```bash
|
|
# 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
|
|
|
|
```bash
|
|
# 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
|
|
|
|
```bash
|
|
# 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)
|
|
|
|
```bash
|
|
# 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** :
|
|
```bash
|
|
# 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** :
|
|
|
|
```bash
|
|
# 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
|