xpeditis2.0/DEPLOY_README.md
David 7dadd951bb
All checks were successful
CI/CD Pipeline / Backend - Build, Test & Push (push) Successful in 16m18s
CI/CD Pipeline / Frontend - Build, Test & Push (push) Successful in 30m58s
CI/CD Pipeline / Integration Tests (push) Has been skipped
CI/CD Pipeline / Deployment Summary (push) Successful in 2s
CI/CD Pipeline / Discord Notification (Failure) (push) Has been skipped
CI/CD Pipeline / Discord Notification (Success) (push) Successful in 1s
fix portainer deploy
2025-11-19 15:17:53 +01:00

290 lines
7.2 KiB
Markdown

# 🚀 Guide de Déploiement Rapide - Xpeditis
## 📋 TL;DR
Pour déployer sur Portainer avec les migrations automatiques :
```bash
# 1. Rendre le script exécutable (une seule fois)
chmod +x deploy-to-portainer.sh
# 2. Build et push les images
./deploy-to-portainer.sh all
# 3. Aller sur Portainer et update le stack
# https://portainer.weworkstudio.com
# Stacks → xpeditis-preprod → Update → ✅ Re-pull image → Update
```
---
## 📚 Documentation Complète
### Documents Disponibles
1. **DEPLOYMENT_CHECKLIST.md****À LIRE EN PREMIER**
- Checklist complète étape par étape
- Tests de vérification
- Troubleshooting détaillé
2. **PORTAINER_MIGRATION_AUTO.md**
- Explication technique des migrations automatiques
- Guide de rollback
- Métriques de performance
3. **CHANGES_SUMMARY.md**
- Liste exhaustive des fichiers modifiés
- Problèmes résolus
- Impact des changements
4. **DOCKER_FIXES_SUMMARY.md**
- 7 problèmes Docker résolus
- Tests effectués
- Configuration finale
---
## 🎯 Ce qui a été corrigé
### ✅ Migrations Automatiques
- Les migrations de base de données s'exécutent automatiquement au démarrage
- Plus besoin d'exécuter manuellement `npm run migration:run`
- Fonctionne aussi bien en local qu'en production
### ✅ CSS Tailwind Compilé
- Le CSS se charge correctement (plus de texte brut)
- Tailwind CSS compilé avec JIT dans le build Docker
### ✅ Configuration Docker Complète
- Toutes les variables d'environnement ajoutées
- CORS configuré correctement
- JWT, Redis, Database, S3/MinIO configurés
### ✅ Problèmes Base de Données Résolus
- Enum UserRole en UPPERCASE
- Organization foreign key correct
- Password hashing avec Argon2
---
## 🛠️ Utilisation du Script de Déploiement
### Déployer Backend + Frontend
```bash
./deploy-to-portainer.sh all
```
### Déployer Backend Seulement
```bash
./deploy-to-portainer.sh backend
```
### Déployer Frontend Seulement
```bash
./deploy-to-portainer.sh frontend
```
### Que fait le script ?
1. ✅ Vérifie que Docker est démarré
2. 🔨 Build l'image Docker (backend et/ou frontend)
3. 📤 Push l'image vers le registry Scaleway
4. 📋 Affiche les prochaines étapes
---
## 🧪 Tester en Local Avant Déploiement
```bash
# 1. Démarrer le stack complet
docker-compose -f docker-compose.dev.yml up -d
# 2. Vérifier les logs des migrations
docker logs xpeditis-backend-dev -f
# Vous devriez voir :
# ✅ PostgreSQL is ready
# ✅ Database migrations completed
# ✅ Starting NestJS application...
# 3. Tester l'API
curl http://localhost:4001/api/v1/auth/login -X POST \
-H "Content-Type: application/json" \
-d '{"email":"admin@xpeditis.com","password":"AdminPassword123!"}'
# 4. Ouvrir le frontend
open http://localhost:3001
# 5. Se connecter
# Email: admin@xpeditis.com
# Password: AdminPassword123!
```
---
## ⚠️ Checklist Avant Déploiement
### Tests Locaux
- [ ] `docker-compose up -d` fonctionne sans erreur
- [ ] Migrations s'exécutent automatiquement
- [ ] Backend répond sur http://localhost:4001
- [ ] Frontend charge avec CSS sur http://localhost:3001
- [ ] Login fonctionne avec admin@xpeditis.com
- [ ] Dashboard se charge sans erreur 500
### Préparation Déploiement
- [ ] Git branch `preprod` est à jour
- [ ] Toutes les modifications sont committées
- [ ] Docker Desktop est démarré
- [ ] Connexion au registry Scaleway est active
### Post-Déploiement
- [ ] Vérifier les logs backend sur Portainer
- [ ] Vérifier que les migrations sont exécutées
- [ ] Tester login sur https://app.preprod.xpeditis.com
- [ ] Vérifier le dashboard sur https://app.preprod.xpeditis.com/dashboard
---
## 🔑 Identifiants par Défaut
### Utilisateurs de Test
**Admin** :
- Email : `admin@xpeditis.com`
- Password : `AdminPassword123!`
- Role : ADMIN
**Manager** :
- Email : `manager@xpeditis.com`
- Password : `AdminPassword123!`
- Role : MANAGER
**User** :
- Email : `user@xpeditis.com`
- Password : `AdminPassword123!`
- Role : USER
⚠️ **IMPORTANT** : Changer ces mots de passe en production !
---
## 📊 Fichiers de Configuration
### Docker Compose (Local)
- `docker-compose.dev.yml` - Configuration locale complète
### Portainer (Production)
- `docker/portainer-stack.yml` - Stack Portainer avec toutes les variables
### Backend
- `apps/backend/Dockerfile` - Build image avec migrations automatiques
- `apps/backend/startup.js` - Script de démarrage (migrations + NestJS)
### Frontend
- `apps/frontend/Dockerfile` - Build image avec CSS Tailwind compilé
- `apps/frontend/.dockerignore` - Inclut les configs Tailwind
---
## 🆘 Problèmes Courants
### Backend crash en boucle
```bash
# Vérifier que PostgreSQL est healthy
docker ps | grep postgres
# Redémarrer PostgreSQL
docker restart xpeditis-db
# Redémarrer backend
docker restart xpeditis-backend
```
### Erreur "relation does not exist"
```bash
# Redémarrer backend pour forcer les migrations
docker restart xpeditis-backend
# Vérifier les logs
docker logs xpeditis-backend -f
```
### CSS ne se charge pas
```bash
# Rebuild l'image frontend
cd apps/frontend
docker build -t rg.fr-par.scw.cloud/weworkstudio/xpeditis-frontend:preprod .
docker push rg.fr-par.scw.cloud/weworkstudio/xpeditis-frontend:preprod
# Update le stack Portainer avec Re-pull image
```
### Login échoue (401)
```bash
# Vérifier que les utilisateurs existent
docker exec xpeditis-db psql -U xpeditis -d xpeditis_preprod -c "SELECT email, role FROM users;"
# Si absent, vérifier les logs de migration
docker logs xpeditis-backend | grep SeedTestUsers
```
**Plus de détails** : Voir `DEPLOYMENT_CHECKLIST.md` section Troubleshooting
---
## 📞 Support
### Documentation
1. **DEPLOYMENT_CHECKLIST.md** - Guide complet étape par étape
2. **PORTAINER_MIGRATION_AUTO.md** - Détails techniques migrations
3. **CHANGES_SUMMARY.md** - Liste des changements
### Logs
```bash
# Backend
docker logs xpeditis-backend -f
# Frontend
docker logs xpeditis-frontend -f
# Database
docker logs xpeditis-db -f
# Tous
docker-compose -f docker-compose.dev.yml logs -f
```
---
## ✅ Statut Actuel
| Composant | Local | Portainer | Statut |
|-----------|-------|-----------|--------|
| Migrations automatiques | ✅ | ⚠️ À déployer | Prêt |
| CSS Tailwind | ✅ | ⚠️ À déployer | Prêt |
| Variables environnement | ✅ | ⚠️ À déployer | Prêt |
| UserRole UPPERCASE | ✅ | ⚠️ À déployer | Prêt |
| Organization FK | ✅ | ⚠️ À déployer | Prêt |
| CSV Upload | ✅ | ⚠️ À déployer | Prêt |
| Documentation | ✅ | ✅ | Complet |
---
## 🎯 Prochaines Étapes
1.**Tester en local** - Vérifier que tout fonctionne
2. 🚀 **Build & Push** - Exécuter `./deploy-to-portainer.sh all`
3. 🔄 **Update Portainer** - Mettre à jour le stack avec re-pull
4. 🧪 **Tester Production** - Vérifier login et dashboard
5. 📊 **Monitorer** - Surveiller les logs pendant 1h
---
**Date** : 2025-11-19
**Version** : 1.0
**Statut** : ✅ Prêt pour déploiement