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>
185 lines
4.4 KiB
Markdown
185 lines
4.4 KiB
Markdown
# ⚡ Fix 404 - Labels Traefik pour Docker Swarm
|
|
|
|
## 🎯 Problème Identifié
|
|
|
|
✅ Backend et frontend démarrent correctement
|
|
❌ 404 sur toutes les URLs
|
|
|
|
**Cause** : Labels Traefik placés sous `labels` au lieu de `deploy.labels` (requis en Docker Swarm mode).
|
|
|
|
---
|
|
|
|
## ✅ Solution : Utiliser le Nouveau Stack
|
|
|
|
J'ai créé un nouveau fichier **`portainer-stack-swarm.yml`** avec tous les labels correctement placés.
|
|
|
|
### Différence Clé
|
|
|
|
**Avant (INCORRECT pour Swarm)** :
|
|
```yaml
|
|
xpeditis-backend:
|
|
labels: # ← Ne fonctionne PAS
|
|
- "traefik.enable=true"
|
|
```
|
|
|
|
**Après (CORRECT pour Swarm)** :
|
|
```yaml
|
|
xpeditis-backend:
|
|
deploy:
|
|
restart_policy:
|
|
condition: on-failure
|
|
labels: # ← REQUIS ici
|
|
- "traefik.enable=true"
|
|
```
|
|
|
|
---
|
|
|
|
## 🚀 Étapes de Déploiement
|
|
|
|
### 1. Supprimer l'Ancien Stack (Portainer UI)
|
|
|
|
1. **Portainer** → **Stacks** → `xpeditis`
|
|
2. **Remove stack** → Confirmer
|
|
|
|
### 2. Créer le Nouveau Stack
|
|
|
|
1. **Portainer** → **Stacks** → **Add stack**
|
|
2. **Name** : `xpeditis-preprod`
|
|
3. **Build method** : Web editor
|
|
4. **Copier TOUT le contenu** de `docker/portainer-stack-swarm.yml`
|
|
5. **Deploy the stack**
|
|
|
|
### 3. Attendre le Déploiement (~2-3 min)
|
|
|
|
**Portainer → Services** :
|
|
- ✅ `xpeditis_xpeditis-backend` : 1/1
|
|
- ✅ `xpeditis_xpeditis-frontend` : 1/1
|
|
- ✅ `xpeditis_xpeditis-db` : 1/1
|
|
- ✅ `xpeditis_xpeditis-redis` : 1/1
|
|
- ✅ `xpeditis_xpeditis-minio` : 1/1
|
|
|
|
### 4. Vérifier les Logs
|
|
|
|
**Backend** :
|
|
```
|
|
✅ Database migrations completed
|
|
🚀 Application is running on: http://0.0.0.0:4000
|
|
```
|
|
|
|
**Frontend** :
|
|
```
|
|
✓ Ready in XXms
|
|
```
|
|
|
|
### 5. Tester les URLs
|
|
|
|
```bash
|
|
curl https://api.preprod.xpeditis.com/api/v1/health
|
|
# Réponse attendue : {"status":"ok"}
|
|
|
|
curl -I https://app.preprod.xpeditis.com
|
|
# Réponse attendue : HTTP/2 200
|
|
```
|
|
|
|
---
|
|
|
|
## 🔍 Modifications Appliquées
|
|
|
|
### 1. Labels Déplacés sous `deploy.labels`
|
|
|
|
✅ **Backend** : Labels Traefik maintenant sous `deploy.labels`
|
|
✅ **Frontend** : Labels Traefik maintenant sous `deploy.labels`
|
|
✅ **MinIO** : Labels Traefik maintenant sous `deploy.labels`
|
|
|
|
### 2. Restart Policy Ajoutée
|
|
|
|
```yaml
|
|
deploy:
|
|
restart_policy:
|
|
condition: on-failure # ← Remplace "restart: unless-stopped"
|
|
```
|
|
|
|
En Swarm mode, `restart` ne fonctionne pas. Utiliser `deploy.restart_policy` à la place.
|
|
|
|
### 3. Middleware Redirect Complété
|
|
|
|
```yaml
|
|
- "traefik.http.routers.xpeditis-minio-http.middlewares=xpeditis-redirect"
|
|
```
|
|
|
|
Ajout du middleware manquant pour redirection HTTP → HTTPS.
|
|
|
|
---
|
|
|
|
## 📊 Comparaison
|
|
|
|
| Fichier | Usage | Compatibilité |
|
|
|---------|-------|---------------|
|
|
| `portainer-stack.yml` | ❌ NE FONCTIONNE PAS en Swarm | Docker Compose standalone |
|
|
| `portainer-stack-swarm.yml` | ✅ UTILISER CELUI-CI | Docker Swarm mode |
|
|
|
|
---
|
|
|
|
## ✅ Checklist Post-Déploiement
|
|
|
|
- [ ] Stack créé dans Portainer avec `portainer-stack-swarm.yml`
|
|
- [ ] Tous les services en état 1/1 (running)
|
|
- [ ] Logs backend : `✅ Database migrations completed`
|
|
- [ ] Logs frontend : `✓ Ready in XXms`
|
|
- [ ] API health : `curl https://api.preprod.xpeditis.com/api/v1/health` → 200
|
|
- [ ] Frontend : `curl https://app.preprod.xpeditis.com` → 200
|
|
- [ ] MinIO Console : `curl https://minio.preprod.xpeditis.com` → 200
|
|
|
|
---
|
|
|
|
## 🎯 Résultat Attendu
|
|
|
|
**Avant** :
|
|
```
|
|
GET https://api.preprod.xpeditis.com → 404 page not found
|
|
GET https://app.preprod.xpeditis.com → 404 page not found
|
|
```
|
|
|
|
**Après** :
|
|
```
|
|
GET https://api.preprod.xpeditis.com/api/v1/health → {"status":"ok"}
|
|
GET https://app.preprod.xpeditis.com → 200 OK (page d'accueil)
|
|
```
|
|
|
|
---
|
|
|
|
## ⚠️ Si Toujours 404 Après Fix
|
|
|
|
### Vérifier que Traefik Voit les Services
|
|
|
|
```bash
|
|
# Via SSH sur le serveur
|
|
docker service logs traefik --tail 50 | grep xpeditis
|
|
|
|
# Devrait afficher :
|
|
# level=debug msg="Creating router xpeditis-api"
|
|
# level=debug msg="Creating service xpeditis-api"
|
|
```
|
|
|
|
### Vérifier le Network Traefik
|
|
|
|
```bash
|
|
docker network inspect traefik_network | grep -A 5 xpeditis
|
|
|
|
# Devrait afficher les containers xpeditis
|
|
```
|
|
|
|
### Forcer Traefik à Reload
|
|
|
|
```bash
|
|
docker service update --force traefik
|
|
```
|
|
|
|
---
|
|
|
|
**Date** : 2025-11-19
|
|
**Fix** : Labels Traefik déplacés sous `deploy.labels`
|
|
**Fichier** : `docker/portainer-stack-swarm.yml`
|
|
**Status** : ✅ Prêt pour déploiement
|
|
**ETA** : 5 minutes
|