xpeditis2.0/PORTAINER_CRASH_DEBUG.md
David 6e3191b50e
All checks were successful
CI/CD Pipeline / Backend - Build, Test & Push (push) Successful in 5m45s
CI/CD Pipeline / Frontend - Build, Test & Push (push) Successful in 28m26s
CI/CD Pipeline / Integration Tests (push) Has been skipped
CI/CD Pipeline / Deployment Summary (push) Successful in 1s
CI/CD Pipeline / Deploy to Portainer (push) Successful in 14s
CI/CD Pipeline / Discord Notification (Failure) (push) Has been skipped
CI/CD Pipeline / Discord Notification (Success) (push) Successful in 1s
fix ci/cd and docker
2025-11-20 00:12:01 +01:00

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