diff --git a/deploy/post-receive.sh b/deploy/post-receive.sh index 3b3fbd8..9dc7c69 100644 --- a/deploy/post-receive.sh +++ b/deploy/post-receive.sh @@ -14,28 +14,31 @@ git --work-tree="$DEPLOY_DIR" --git-dir="$REPO_DIR" checkout -f main cd "$DEPLOY_DIR" -# 2. Dépendances PHP (sans scripts en prod pour éviter les erreurs de conteneur) +# 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 || \ - docker run --rm -v "$DEPLOY_DIR/backend":/app -w /app \ - composer:2 install --no-dev --no-interaction --optimize-autoloader + --no-dev --no-interaction --optimize-autoloader --no-scripts 2>&1 -# 3. Build React → backend/public +# 3. Build React (outDir configuré à ../backend/public dans vite.config.js) echo "==> npm run build" -docker run --rm -v "$DEPLOY_DIR/frontend":/app -w /app \ +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. Vidage du cache Symfony -echo "==> cache:clear" +# 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émarrage des conteneurs si la config Docker a changé +# 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 diff --git a/docker/php/Dockerfile b/docker/php/Dockerfile index 02b6c8c..57cc74e 100644 --- a/docker/php/Dockerfile +++ b/docker/php/Dockerfile @@ -1,6 +1,6 @@ FROM dunglas/frankenphp:latest-php8.3 -# Dépendances système +# Dépendances système (GDAL pour vectorisation satellite) RUN apt-get update && apt-get install -y \ libpq-dev \ libzip-dev \ @@ -20,24 +20,15 @@ RUN install-php-extensions \ opcache \ apcu -# Composer +# Composer (utilisé par le hook post-receive dans le container) COPY --from=composer:latest /usr/bin/composer /usr/bin/composer WORKDIR /app -# Dépendances en premier (cache Docker layer) -COPY backend/composer.json backend/composer.lock ./ -RUN composer install --no-dev --optimize-autoloader --no-scripts - -# Code source -COPY backend/ . - -# Autoload uniquement — pas de cache:warmup ici (besoin de .env.local au runtime) -RUN composer dump-autoload --optimize - COPY docker/php/Caddyfile /etc/caddy/Caddyfile -# Entrypoint : warmup au démarrage du conteneur, quand .env.local est monté +# Le code source et vendor/ sont injectés par volume mount (./backend:/app) +# Le cache warmup nécessite .env.local → fait au démarrage, pas au build COPY docker/php/entrypoint.sh /usr/local/bin/entrypoint.sh RUN chmod +x /usr/local/bin/entrypoint.sh