Docker config update to fit project
This commit is contained in:
@@ -35,10 +35,6 @@ RUN composer install --no-dev --optimize-autoloader --no-interaction
|
|||||||
COPY . .
|
COPY . .
|
||||||
COPY --from=assets /build/public/assets/ public/assets/
|
COPY --from=assets /build/public/assets/ public/assets/
|
||||||
|
|
||||||
# Archive les migrations hors du WORKDIR : le bind mount ./data/database/
|
|
||||||
# écrase /var/www/app/database/ au démarrage — l'entrypoint recopie depuis ici.
|
|
||||||
RUN cp -r database /database.baked
|
|
||||||
|
|
||||||
COPY --chmod=755 docker/php/entrypoint.sh /usr/local/bin/entrypoint.sh
|
COPY --chmod=755 docker/php/entrypoint.sh /usr/local/bin/entrypoint.sh
|
||||||
|
|
||||||
ENTRYPOINT ["entrypoint.sh"]
|
ENTRYPOINT ["entrypoint.sh"]
|
||||||
|
|||||||
@@ -1,42 +1,39 @@
|
|||||||
#!/bin/sh
|
#!/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
|
for item in /var/www/app/public/*; do
|
||||||
name=$(basename "$item")
|
[ -e "$item" ] || continue
|
||||||
[ "$name" = "media" ] && continue
|
name=$(basename "$item")
|
||||||
cp -a "$item" /data/public/
|
[ "$name" = "media" ] && continue
|
||||||
|
cp -a "$item" /data/public/
|
||||||
done
|
done
|
||||||
|
|
||||||
# database/ → migrations depuis l'archive baked.
|
# Permissions sur les répertoires persistants. Doit s'exécuter en root avant
|
||||||
# /var/www/app/database/ est un bind mount vide au premier démarrage :
|
# le démarrage de PHP-FPM.
|
||||||
# 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
|
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.
|
# Invalide les caches compilés à chaque déploiement.
|
||||||
# - Twig : les templates compilés peuvent être obsolètes après modification d'une vue
|
# - Twig : les templates compilés peuvent être obsolètes après modification d'une vue
|
||||||
# ou d'une extension Twig.
|
# ou d'une extension Twig.
|
||||||
# - DI : le container PHP-DI compilé doit être regénéré après tout changement
|
# - DI : le container PHP-DI compilé doit être régénéré après tout changement
|
||||||
# dans src/Kernel/Runtime/DI/container.php. Sans cette ligne, la première requête compile
|
# de configuration du container.
|
||||||
# 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/twig/*
|
||||||
rm -rf /var/www/app/var/cache/di/*
|
rm -rf /var/www/app/var/cache/di/*
|
||||||
|
|
||||||
# Passe la main à la commande principale (php-fpm) en remplaçant le processus
|
# Passe la main au processus principal (php-fpm).
|
||||||
# entrypoint par php-fpm PID 1 — requis pour la gestion des signaux Docker.
|
|
||||||
exec "$@"
|
exec "$@"
|
||||||
|
|||||||
Reference in New Issue
Block a user