Docker config update to fit project

This commit is contained in:
julien
2026-03-20 23:14:40 +01:00
parent 53b223587e
commit 59f9eab93d
2 changed files with 28 additions and 35 deletions

View File

@@ -1,42 +1,39 @@
#!/bin/sh
set -e
set -eu
# Prépare les répertoires runtime/persistants.
mkdir -p \
/data/public \
/var/www/app/database \
/var/www/app/public/media \
/var/www/app/var/cache/twig \
/var/www/app/var/cache/htmlpurifier \
/var/www/app/var/cache/di \
/var/www/app/var/logs
# Synchronise les fichiers publics versionnés (index.php, assets compilés, etc.)
# vers le volume partagé. Le répertoire media est exclu car il contient les
# uploads utilisateurs et est géré séparément.
find /data/public -mindepth 1 -maxdepth 1 -exec rm -rf {} +
# 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/
[ -e "$item" ] || continue
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.
# Permissions sur les répertoires persistants. Doit s'exécuter en root avant
# le démarrage de PHP-FPM.
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 src/Kernel/Runtime/DI/container.php. Sans cette ligne, la première requête compile
# un container incohérent et toutes les suivantes échouent avec une erreur 500.
# Invalide 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 régénéré après tout changement
# de configuration du container.
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.
# Passe la main au processus principal (php-fpm).
exec "$@"