43 lines
2.0 KiB
Bash
43 lines
2.0 KiB
Bash
#!/bin/sh
|
|
set -e
|
|
|
|
# public/ → assets compilés, index.php
|
|
# Synchronisé à chaque démarrage pour déployer les nouveaux assets.
|
|
# media/ est exclu : c'est un bind mount séparé contenant les uploads
|
|
# utilisateurs — le copier dans sa propre destination causerait une erreur.
|
|
for item in /var/www/app/public/*; do
|
|
name=$(basename "$item")
|
|
[ "$name" = "media" ] && continue
|
|
cp -a "$item" /data/public/
|
|
done
|
|
|
|
# database/ → migrations depuis l'archive baked.
|
|
# /var/www/app/database/ est un bind mount vide au premier démarrage :
|
|
# les migrations sont copiées depuis /database.baked/ qui n'est pas monté.
|
|
# cp -rn préserve app.sqlite sur les déploiements suivants.
|
|
cp -rn /database.baked/. /var/www/app/database/ 2>/dev/null || true
|
|
|
|
# Pré-création de public/media/ pour que les permissions soient fixées
|
|
# ici, en même temps que les autres répertoires persistants, plutôt qu'à
|
|
# la première requête par Bootstrap::checkDirectories().
|
|
mkdir -p /var/www/app/public/media
|
|
|
|
# Permissions sur les bind mounts : doit s'exécuter en root avant
|
|
# le démarrage de PHP-FPM. Bootstrap.php crée ensuite les sous-répertoires
|
|
# (var/cache/twig, var/cache/htmlpurifier, var/logs) à la première requête
|
|
# avec les bonnes permissions.
|
|
chown -R www-data:www-data /data /var/www/app/database /var/www/app/var /var/www/app/public/media
|
|
|
|
# Invalider les caches compilés à chaque déploiement.
|
|
# - Twig : les templates compilés peuvent être obsolètes après modification d'une vue
|
|
# ou d'une extension Twig.
|
|
# - DI : le container PHP-DI compilé doit être regénéré après tout changement
|
|
# dans config/container.php. Sans cette ligne, la première requête compile
|
|
# un container incohérent et toutes les suivantes échouent avec une erreur 500.
|
|
rm -rf /var/www/app/var/cache/twig/*
|
|
rm -rf /var/www/app/var/cache/di/*
|
|
|
|
# Passe la main à la commande principale (php-fpm) en remplaçant le processus
|
|
# entrypoint par php-fpm PID 1 — requis pour la gestion des signaux Docker.
|
|
exec "$@"
|