# ⚡ 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
