Mise à Jour
Ce guide explique comment mettre à jour PCH-SIG vers une nouvelle version.
Préparation
Vérifier la version actuelle
# Version backend
docker exec pch_backend php bin/console --version
# Version frontend (dans package.json)
cat frontend/package.json | grep version
Sauvegarder avant mise à jour
Important
Toujours effectuer une sauvegarde complète avant toute mise à jour.
# Sauvegarde rapide
docker exec pch_postgres pg_dump -U pch_admin pch_sig > backup_avant_maj.sql
Mise à jour du Frontend
Étape 1 : Récupérer les modifications
cd frontend
# Récupérer les dernières modifications
git pull origin main
# Installer les nouvelles dépendances
npm install
Étape 2 : Build de production
npm run build
Étape 3 : Déployer sur le serveur
# Créer la session PowerShell
$cred = Get-Credential
$session = New-PSSession -ComputerName $SERVER_IP -Credential $cred
# Copier le build
Copy-Item -Path ".\build\*" -Destination "C:\pch-sig\frontend\build" -ToSession $session -Recurse -Force
# Redémarrer le conteneur
Invoke-Command -Session $session -ScriptBlock {
docker-machine ssh default "docker restart pch_frontend"
}
Remove-PSSession $session
Étape 4 : Mettre à jour le Service Worker
Incrémenter la version du cache dans frontend/public/service-worker.js :
// Avant
const CACHE_NAME = 'pch-sig-cache-v2';
// Après
const CACHE_NAME = 'pch-sig-cache-v3';
Mise à jour du Backend
Étape 1 : Récupérer les modifications
cd backend
# Récupérer les dernières modifications
git pull origin main
# Installer les dépendances
composer install --no-dev --optimize-autoloader
Étape 2 : Exécuter les migrations
# Vérifier les migrations en attente
php bin/console doctrine:migrations:status
# Exécuter les migrations
php bin/console doctrine:migrations:migrate --no-interaction
Étape 3 : Vider le cache
php bin/console cache:clear --env=prod
php bin/console cache:warmup --env=prod
Étape 4 : Déployer sur le serveur
# Copier les fichiers backend
Copy-Item -Path ".\src\*" -Destination "C:\pch-sig\backend\src" -ToSession $session -Recurse -Force
Copy-Item -Path ".\config\*" -Destination "C:\pch-sig\backend\config" -ToSession $session -Recurse -Force
# Exécuter les migrations sur le serveur
Invoke-Command -Session $session -ScriptBlock {
docker exec pch_backend php bin/console doctrine:migrations:migrate --no-interaction
docker exec pch_backend php bin/console cache:clear --env=prod
}
Mise à jour des Conteneurs Docker
Mettre à jour les images
cd deploy
# Télécharger les nouvelles images
docker compose pull
# Redémarrer avec les nouvelles images
docker compose up -d
Reconstruire une image personnalisée
Si vous avez modifié un Dockerfile :
# Reconstruire l'image backend
docker compose build backend
# Redémarrer le conteneur
docker compose up -d backend
Gestion des Migrations de Base de Données
Vérifier l'état des migrations
docker exec pch_backend php bin/console doctrine:migrations:status
Créer une nouvelle migration
docker exec pch_backend php bin/console make:migration
Annuler la dernière migration
docker exec pch_backend php bin/console doctrine:migrations:migrate prev
Exécuter une migration spécifique
docker exec pch_backend php bin/console doctrine:migrations:execute 'DoctrineMigrations\Version20240115120000' --up
Rollback en cas de problème
Restaurer le frontend
# Les backups sont dans C:\pch-sig\backups\
Copy-Item -Path "C:\pch-sig\backups\frontend-YYYYMMDD\*" -Destination "C:\pch-sig\frontend\build" -Recurse -Force
docker restart pch_frontend
Restaurer le backend
# Revenir à la version précédente du code
git checkout HEAD~1
# Annuler les migrations
docker exec pch_backend php bin/console doctrine:migrations:migrate prev
Restaurer la base de données
# Restaurer depuis la sauvegarde
docker exec -i pch_postgres psql -U pch_admin -d pch_sig < backup_avant_maj.sql
Mises à jour majeures
Changement de version PHP
- Mettre à jour l'image dans
docker-compose.yml - Vérifier la compatibilité des dépendances Composer
- Tester en environnement de développement
- Déployer en production
Changement de version PostgreSQL
- Exporter toutes les données
- Arrêter l'ancien conteneur
- Mettre à jour l'image
- Restaurer les données
# Export complet
docker exec pch_postgres pg_dumpall -U pch_admin > full_backup.sql
# Mettre à jour et restaurer
docker compose down postgres
# Modifier la version dans docker-compose.yml
docker compose up -d postgres
docker exec -i pch_postgres psql -U pch_admin < full_backup.sql
Checklist de mise à jour
- Sauvegarder la base de données
- Sauvegarder les fichiers de configuration
- Noter la version actuelle
- Récupérer les modifications (git pull)
- Installer les dépendances
- Exécuter les migrations
- Vider le cache
- Déployer sur le serveur
- Tester l'application
- Mettre à jour la version du Service Worker
- Informer les utilisateurs