#!/bin/sh set -e # Le volume Compose monte les sources par-dessus l'image, ce qui masque le vendor/ # construit au build. On le régénère au démarrage — d'où cet entrypoint séparé # plutôt qu'un `composer install` dans le Dockerfile de dev. if [ ! -f vendor/autoload_runtime.php ]; then echo '[entrypoint] vendor/ absent — composer install…' composer install --prefer-dist --no-progress --no-interaction fi mkdir -p var/cache var/log var/storage # Attend que MariaDB accepte réellement des requêtes. Le healthcheck Compose # couvre la disponibilité du serveur, pas celle du schéma applicatif. until php bin/console dbal:run-sql 'SELECT 1' >/dev/null 2>&1; do echo '[entrypoint] attente de MariaDB…' sleep 2 done # Un seul service migre. Sans ce garde-fou, `php` et `worker` démarrent en # parallèle et se disputent la table de verrouillage des migrations. if [ "${RUN_MIGRATIONS:-0}" = "1" ]; then echo '[entrypoint] migrations…' php bin/console doctrine:migrations:migrate --no-interaction --allow-no-migration else # Les workers attendent que le schéma soit à jour avant de consommer. until php bin/console doctrine:migrations:up-to-date >/dev/null 2>&1; do echo '[entrypoint] attente des migrations…' sleep 2 done fi exec "$@"