xpeditis2.0/PORTAINER_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

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

  1. Aller sur Scaleway Console
  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é)

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

# 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/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)

# 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