fix(deploy): corriger la race condition sur le cache prod au déploiement #43
@@ -116,14 +116,13 @@ task('webpack_encore:build', function () {
|
||||
sh -c '$installCmd'");
|
||||
});
|
||||
|
||||
// Restart Docker containers (entrypoint gère les migrations automatiquement)
|
||||
// Le cache:clear est fait APRÈS le restart : Docker résout le bind mount au démarrage
|
||||
// du container, pas dynamiquement. Avant restart, docker exec voit encore l'ancienne release.
|
||||
// Restart Docker containers (entrypoint gère migrations + cache:warmup automatiquement)
|
||||
// Le cache est regénéré par l'entrypoint AVANT que FrankenPHP ne démarre,
|
||||
// ce qui évite la race condition entre FrankenPHP et un docker exec concurrent.
|
||||
desc('Restart Docker containers');
|
||||
task('docker:restart', function () {
|
||||
run('docker restart mangarr-worker-commands mangarr-worker-events mangarr-worker-scheduler');
|
||||
run('docker restart mangarr');
|
||||
run('docker exec mangarr php bin/console cache:clear --env=prod');
|
||||
});
|
||||
|
||||
// Pas de PHP sur l'hôte : désactiver les tâches Symfony qui en ont besoin
|
||||
|
||||
@@ -53,11 +53,12 @@ if [ "$1" = 'frankenphp' ] || [ "$1" = 'php' ] || [ "$1" = 'bin/console' ]; then
|
||||
fi
|
||||
fi
|
||||
|
||||
# Vider le cache prod stale avant le démarrage des workers FrankenPHP.
|
||||
# Sans ça, les workers chargent l'ancien cache du volume Docker et crashent
|
||||
# en boucle si les classes du cache ne correspondent plus à la version déployée.
|
||||
# Vider le cache prod stale et le regénérer AVANT le démarrage de FrankenPHP.
|
||||
# Sans ça, FrankenPHP et le deploy script compilent le container DI en parallèle
|
||||
# → fichiers partiellement écrits → crash au démarrage des workers.
|
||||
if [ "$APP_ENV" = "prod" ]; then
|
||||
rm -rf var/cache/prod
|
||||
php bin/console cache:warmup --env=prod
|
||||
fi
|
||||
|
||||
setfacl -R -m u:www-data:rwX -m u:"$(whoami)":rwX var
|
||||
|
||||
Reference in New Issue
Block a user