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
8.2 KiB
Markdown
295 lines
8.2 KiB
Markdown
# 🔍 Debug Portainer - Images ARM64 Disponibles Mais Ne Montent Pas
|
|
|
|
## ✅ Vérifications Effectuées
|
|
|
|
### 1. Images Multi-Architecture Présentes dans Registry ✅
|
|
|
|
**Backend** :
|
|
```json
|
|
{
|
|
"manifests": [
|
|
{ "platform": { "architecture": "amd64", "os": "linux" } },
|
|
{ "platform": { "architecture": "arm64", "os": "linux" } }
|
|
]
|
|
}
|
|
```
|
|
|
|
**Frontend** :
|
|
```json
|
|
{
|
|
"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é ✅
|
|
|
|
```yaml
|
|
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
|
|
|
|
1. Aller sur [Scaleway Console](https://console.scaleway.com/registry/namespaces)
|
|
2. Container Registry → `weworkstudio`
|
|
3. **Push/Pull credentials** → Créer ou copier le token
|
|
4. Copier :
|
|
- **Username** : `nologin`
|
|
- **Password** : `[le token Scaleway]`
|
|
|
|
#### Étape 2 : Ajouter Registry dans Portainer
|
|
|
|
**Option A : Via Interface Portainer**
|
|
|
|
1. Portainer → **Registries**
|
|
2. **Add registry**
|
|
3. Remplir :
|
|
- **Name** : `Scaleway Registry`
|
|
- **Registry URL** : `rg.fr-par.scw.cloud/weworkstudio`
|
|
- **Authentication** : ✅ Activer
|
|
- **Username** : `nologin`
|
|
- **Password** : `[token Scaleway]`
|
|
4. **Add registry**
|
|
|
|
**Option B : Via Docker Swarm Secret (Plus sécurisé)**
|
|
|
|
```bash
|
|
# 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
|
|
|
|
1. Aller sur Portainer → **Stacks** → Votre stack
|
|
2. **Editor**
|
|
3. Cocher **"Re-pull image and redeploy"**
|
|
4. **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** :
|
|
|
|
```bash
|
|
# Sur CHAQUE node du Swarm
|
|
docker login rg.fr-par.scw.cloud/weworkstudio
|
|
# Username: nologin
|
|
# Password: [token]
|
|
```
|
|
|
|
**Vérifier les nodes Swarm** :
|
|
|
|
```bash
|
|
# 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`** :
|
|
|
|
```yaml
|
|
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** :
|
|
|
|
```bash
|
|
# 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.
|
|
|
|
```bash
|
|
# 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)
|
|
|
|
```bash
|
|
# 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/arm64` dans 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)
|
|
|
|
```bash
|
|
# 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** :
|
|
1. Stacks → Votre stack
|
|
2. Editor
|
|
3. ✅ Cocher "Re-pull image and redeploy"
|
|
4. 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
|