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>
8.2 KiB
🔍 Debug Portainer - Images ARM64 Disponibles Mais Ne Montent Pas
✅ Vérifications Effectuées
1. Images Multi-Architecture Présentes dans Registry ✅
Backend :
{
"manifests": [
{ "platform": { "architecture": "amd64", "os": "linux" } },
{ "platform": { "architecture": "arm64", "os": "linux" } }
]
}
Frontend :
{
"manifests": [
{ "platform": { "architecture": "amd64", "os": "linux" } },
{ "platform": { "architecture": "arm64", "os": "linux" } }
]
}
✅ Conclusion : Les images ARM64 existent bien dans le registry Scaleway.
2. Stack Portainer Correctement Configuré ✅
xpeditis-backend:
image: rg.fr-par.scw.cloud/weworkstudio/xpeditis-backend:preprod
# ✅ Tag correct
xpeditis-frontend:
image: rg.fr-par.scw.cloud/weworkstudio/xpeditis-frontend:preprod
# ✅ Tag correct
3. Dockerfiles ARM64-Compatible ✅
Les deux Dockerfiles utilisent node:20-alpine qui supporte ARM64 nativement.
🚨 Causes Possibles du Problème
Cause #1 : Registry Credentials Manquants dans Portainer (PROBABLE)
Symptôme : Portainer ne peut pas pull les images privées depuis Scaleway.
Erreur typique :
Error response from daemon: pull access denied for rg.fr-par.scw.cloud/weworkstudio/xpeditis-backend, repository does not exist or may require 'docker login'
Solution : Ajouter les credentials du registry Scaleway dans Portainer.
Étape 1 : Obtenir les Credentials Scaleway
- Aller sur Scaleway Console
- Container Registry →
weworkstudio - Push/Pull credentials → Créer ou copier le token
- Copier :
- Username :
nologin - Password :
[le token Scaleway]
- Username :
Étape 2 : Ajouter Registry dans Portainer
Option A : Via Interface Portainer
- Portainer → Registries
- Add registry
- Remplir :
- Name :
Scaleway Registry - Registry URL :
rg.fr-par.scw.cloud/weworkstudio - Authentication : ✅ Activer
- Username :
nologin - Password :
[token Scaleway]
- Name :
- Add registry
Option B : Via Docker Swarm Secret (Plus sécurisé)
# Sur le serveur Portainer
docker login rg.fr-par.scw.cloud/weworkstudio
# Username: nologin
# Password: [token]
# Vérifier que ça marche
docker pull rg.fr-par.scw.cloud/weworkstudio/xpeditis-backend:preprod
Étape 3 : Update le Stack Portainer
- Aller sur Portainer → Stacks → Votre stack
- Editor
- Cocher "Re-pull image and redeploy"
- Update the stack
Cause #2 : Docker Swarm Mode Issues
Symptôme : Le stack utilise deploy.placement.constraints (ligne 22-25), ce qui signifie que vous êtes en Docker Swarm mode.
Problème connu : Dans Swarm, les nodes doivent avoir accès au registry individuellement.
Solution :
# Sur CHAQUE node du Swarm
docker login rg.fr-par.scw.cloud/weworkstudio
# Username: nologin
# Password: [token]
Vérifier les nodes Swarm :
# Sur le manager
docker node ls
# Devrait montrer tous les nodes READY
Cause #3 : Problème de Platform Selection
Symptôme : Docker pull la mauvaise architecture (AMD64 au lieu de ARM64).
Solution : Forcer la plateforme ARM64 dans le stack Portainer.
Modifier portainer-stack.yml :
xpeditis-backend:
image: rg.fr-par.scw.cloud/weworkstudio/xpeditis-backend:preprod
platform: linux/arm64 # ← Ajouter cette ligne
restart: unless-stopped
# ...
xpeditis-frontend:
image: rg.fr-par.scw.cloud/weworkstudio/xpeditis-frontend:preprod
platform: linux/arm64 # ← Ajouter cette ligne
restart: unless-stopped
# ...
Note : Normalement Docker détecte automatiquement l'architecture, mais forcer platform garantit le bon choix.
Cause #4 : Problème de Réseau Portainer → Registry
Symptôme : Portainer ne peut pas atteindre Scaleway registry depuis le serveur ARM.
Test :
# Sur le serveur Portainer
curl -I https://rg.fr-par.scw.cloud/v2/
# Devrait retourner :
# HTTP/2 401 (Unauthorized est OK, ça signifie que le registry est accessible)
Si erreur de connexion :
- Vérifier firewall
- Vérifier DNS
- Vérifier proxy
Cause #5 : Erreur de Build CI/CD (ARM64 Cassé)
Test : Vérifier que l'image ARM64 fonctionne en la testant localement.
# Sur votre Mac (Apple Silicon = ARM64)
docker pull --platform linux/arm64 rg.fr-par.scw.cloud/weworkstudio/xpeditis-backend:preprod
docker run --rm --platform linux/arm64 \
-e DATABASE_HOST=test \
-e DATABASE_PORT=5432 \
-e DATABASE_USER=test \
-e DATABASE_PASSWORD=test \
-e DATABASE_NAME=test \
-e REDIS_HOST=test \
-e REDIS_PORT=6379 \
-e JWT_SECRET=test \
rg.fr-par.scw.cloud/weworkstudio/xpeditis-backend:preprod \
node -e "console.log('ARM64 works!')"
# Devrait afficher "ARM64 works!" sans erreur
Si erreur de build :
- Vérifier les logs GitHub Actions
- Vérifier que buildx a bien compilé ARM64
🎯 Diagnostic Rapide
Commandes à Exécuter sur le Serveur Portainer (ARM64)
# 1. Vérifier architecture du serveur
uname -m
# Devrait afficher : aarch64 ou arm64
# 2. Vérifier que Docker peut voir le registry
docker manifest inspect rg.fr-par.scw.cloud/weworkstudio/xpeditis-backend:preprod
# 3. Tester le pull manuel (SANS login)
docker pull rg.fr-par.scw.cloud/weworkstudio/xpeditis-backend:preprod
# Si erreur "access denied" → C'est un problème de credentials ✅
# 4. Login et retry
docker login rg.fr-par.scw.cloud/weworkstudio
# Username: nologin
# Password: [token]
docker pull rg.fr-par.scw.cloud/weworkstudio/xpeditis-backend:preprod
# Devrait maintenant réussir ✅
# 5. Vérifier que c'est bien ARM64
docker image inspect rg.fr-par.scw.cloud/weworkstudio/xpeditis-backend:preprod | grep Architecture
# Devrait afficher : "Architecture": "arm64"
📋 Checklist de Résolution
- Vérifier que le serveur est bien ARM64 :
uname -m - Tester pull manuel SANS login → Si erreur "access denied" = problème credentials
- Ajouter registry dans Portainer : Registries → Add registry → Scaleway
- Login Docker sur le serveur :
docker login rg.fr-par.scw.cloud/weworkstudio - Si Swarm mode : Login sur TOUS les nodes
- Forcer platform ARM64 : Ajouter
platform: linux/arm64dans stack - Tester pull manuel AVEC login → Devrait réussir
- Update stack Portainer avec "Re-pull image and redeploy"
- Vérifier logs des conteneurs : Portainer → Containers → Logs
🔧 Solution la Plus Probable
90% du temps, c'est un problème de registry credentials manquants.
Solution Rapide (5 minutes)
# 1. SSH sur le serveur Portainer
ssh votre-serveur
# 2. Login Docker
docker login rg.fr-par.scw.cloud/weworkstudio
# Username: nologin
# Password: [copier le token depuis Scaleway Console]
# 3. Test pull
docker pull rg.fr-par.scw.cloud/weworkstudio/xpeditis-backend:preprod
# Si ça marche, retourner sur Portainer et update le stack
Ensuite dans Portainer :
- Stacks → Votre stack
- Editor
- ✅ Cocher "Re-pull image and redeploy"
- Update the stack
Les conteneurs devraient maintenant démarrer ! 🎉
📊 Tableau de Diagnostic
| Symptôme | Cause Probable | Solution |
|---|---|---|
access denied ou authentication required |
Credentials manquants | Ajouter registry dans Portainer |
manifest unknown |
Image n'existe pas | Vérifier tag (:preprod) |
no matching manifest for linux/arm64 |
Image AMD64 uniquement | Rebuild avec ARM64 (déjà fait ✅) |
| Pull réussit mais container crash | Erreur applicative | Vérifier logs container |
| Stuck à "Preparing" | Réseau lent ou proxy | Vérifier connexion Scaleway |
Date : 2025-11-19 Status : 🔍 Diagnostic complet - Attente test sur serveur Portainer Action Suivante : Exécuter les commandes de diagnostic sur le serveur ARM64