# ⚡ Fix Rapide Portainer - Images Ne Montent Pas ## 🎯 Diagnostic ✅ **Images ARM64 existent dans le registry** (vérifié avec `docker manifest inspect`) ✅ **CI/CD build correctement** les images multi-architecture ✅ **Stack Portainer correctement configuré** ❌ **Problème le plus probable** : **Registry credentials manquants** --- ## 🔧 Solution Rapide (5 minutes) ### Étape 1 : Login Docker sur le Serveur Portainer ```bash # SSH sur votre serveur ARM64 ssh votre-serveur # Login au registry Scaleway docker login rg.fr-par.scw.cloud/weworkstudio # Credentials : Username: nologin Password: [copier le token depuis https://console.scaleway.com/registry/namespaces] ``` ### Étape 2 : Test Pull Manuel ```bash # Tester que ça marche docker pull rg.fr-par.scw.cloud/weworkstudio/xpeditis-backend:preprod # Devrait afficher : # preprod: Pulling from weworkstudio/xpeditis-backend # ... # Status: Downloaded newer image for rg.fr-par.scw.cloud/weworkstudio/xpeditis-backend:preprod # Vérifier que c'est ARM64 docker image inspect rg.fr-par.scw.cloud/weworkstudio/xpeditis-backend:preprod | grep Architecture # Devrait afficher : "Architecture": "arm64" ✅ ``` ### Étape 3 : Ajouter Registry dans Portainer (Interface Web) 1. **Portainer** → **Registries** (menu gauche) 2. **Add registry** 3. Remplir : - **Name** : `Scaleway` - **Registry URL** : `rg.fr-par.scw.cloud/weworkstudio` - **Authentication** : ✅ Activer - **Username** : `nologin` - **Password** : `[token Scaleway]` 4. **Add registry** ### Étape 4 : Update le Stack Portainer 1. **Portainer** → **Stacks** → Votre stack Xpeditis 2. Click **Editor** 3. Copier tout le contenu de `docker/portainer-stack.yml` (avec `platform: linux/arm64` ajouté) 4. ✅ **Cocher "Re-pull image and redeploy"** 5. Click **Update the stack** ### Étape 5 : Vérifier les Logs 1. **Portainer** → **Containers** 2. Cliquer sur `xpeditis-backend` 3. **Logs** **Logs attendus** : ``` ✅ PostgreSQL is ready 🔄 Running database migrations... ✅ Successfully ran X migration(s) ✅ Database migrations completed 🚀 Starting NestJS application... [Nest] Application is running on: http://0.0.0.0:4000 ``` --- ## 🚨 Si Docker Swarm Mode Si vous utilisez Docker Swarm (présence de `deploy.placement.constraints` dans le stack), vous devez login sur **TOUS les nodes** : ```bash # Sur chaque node du swarm docker login rg.fr-par.scw.cloud/weworkstudio ``` Vérifier les nodes : ```bash docker node ls # Tous doivent être READY ``` --- ## ⚙️ Modifications Appliquées au Stack **Ajout de `platform: linux/arm64`** pour forcer la sélection ARM64 : ```yaml xpeditis-backend: image: rg.fr-par.scw.cloud/weworkstudio/xpeditis-backend:preprod platform: linux/arm64 # ← AJOUTÉ restart: unless-stopped # ... xpeditis-frontend: image: rg.fr-par.scw.cloud/weworkstudio/xpeditis-frontend:preprod platform: linux/arm64 # ← AJOUTÉ restart: unless-stopped # ... ``` **Pourquoi ?** : Garantit que Docker pull l'image ARM64 et non AMD64. --- ## 📊 Checklist Rapide - [ ] SSH sur serveur Portainer - [ ] `docker login rg.fr-par.scw.cloud/weworkstudio` - [ ] Test : `docker pull rg.fr-par.scw.cloud/weworkstudio/xpeditis-backend:preprod` - [ ] Ajouter registry dans Portainer (Registries → Add registry) - [ ] Copier le nouveau `portainer-stack.yml` (avec `platform: linux/arm64`) - [ ] Update stack avec "Re-pull image and redeploy" - [ ] Vérifier logs : `✅ Database migrations completed` puis `🚀 Starting NestJS application...` - [ ] Tester API : `curl https://api.preprod.xpeditis.com/api/v1/health` - [ ] Tester frontend : `https://app.preprod.xpeditis.com` --- ## 🎯 Résumé du Problème | Composant | Status | |-----------|--------| | Images ARM64 dans registry | ✅ OK | | CI/CD build multi-arch | ✅ OK | | Stack configuration | ✅ OK | | **Registry credentials** | ❌ **MANQUANTS** | **Solution** : Ajouter credentials Scaleway dans Portainer + forcer `platform: linux/arm64` --- **ETA Fix** : 5 minutes **Impact** : 🔴 Critique - Bloque déploiement **Difficulté** : ⚡ Facile - Configuration uniquement