#!/bin/bash # post-receive hook — à copier dans /opt/barerepos/radarsargasses971.git/hooks/post-receive # puis : chmod +x /opt/barerepos/radarsargasses971.git/hooks/post-receive set -e DEPLOY_DIR="/opt/apps/radarsargasses971" REPO_DIR="/opt/barerepos/radarsargasses971.git" echo "==> [post-receive] Déploiement Sargasse-Sentry" # 1. Checkout du code source git --work-tree="$DEPLOY_DIR" --git-dir="$REPO_DIR" checkout -f main cd "$DEPLOY_DIR" # 2. Dépendances PHP dans le container (vendor/ est dans le volume ./backend) echo "==> composer install" docker compose exec -T php composer install \ --no-dev --no-interaction --optimize-autoloader --no-scripts 2>&1 # 3. Build React (outDir configuré à ../backend/public dans vite.config.js) echo "==> npm run build" docker run --rm \ -v "$DEPLOY_DIR/frontend":/app/frontend \ -v "$DEPLOY_DIR/backend/public":/app/backend/public \ -w /app/frontend \ node:20-alpine sh -c "npm ci --silent && npm run build" # 4. Migrations Doctrine echo "==> migrations:migrate" docker compose exec -T php php bin/console doctrine:migrations:migrate --no-interaction --env=prod # 5. Cache Symfony echo "==> cache:clear + warmup" docker compose exec -T php php bin/console cache:clear --env=prod --no-warmup docker compose exec -T php php bin/console cache:warmup --env=prod # 6. Redémarrer si docker-compose.yml a changé # PAS de --build : le code est dans le volume, l'image ne change que si le # Dockerfile est modifié (nouvelles extensions PHP, GDAL, etc.) echo "==> docker compose up -d" docker compose up -d --remove-orphans echo "==> Déploiement terminé."