#!/bin/sh set -e # Warmup du cache Symfony au démarrage (les vars d'env sont disponibles ici) php bin/console cache:warmup --env=prod --no-debug 2>&1 || true # Génère les tiles au démarrage depuis les données existantes en DB. # Indispensable si le container redémarre sans que les tiles aient été régénérées # par le pipeline d'ingestion (premier démarrage, redémarrage inattendu, etc.). php bin/console app:generate-tiles --env=prod --no-debug 2>&1 | tee -a var/log/tiles.log || true # Boucle de supervision : relance le worker automatiquement après --time-limit ou crash. # Sans cette boucle, les workers s'arrêtent définitivement après 3600s (--time-limit) # et plus aucune ingestion ni traitement de message n'a lieu. _supervise() { name="$1"; shift while true; do printf '[%s] Starting worker: %s\n' "$(date -u +%Y-%m-%dT%H:%M:%SZ)" "$name" >> "var/log/${name}.log" "$@" >> "var/log/${name}.log" 2>&1 || true printf '[%s] Worker %s stopped — restart in 5s\n' "$(date -u +%Y-%m-%dT%H:%M:%SZ)" "$name" >> "var/log/${name}.log" sleep 5 done } # Worker scheduler — réveille le pipeline toutes les 6h _supervise scheduler \ php bin/console messenger:consume scheduler_main \ --env=prod --no-debug --memory-limit=64M --time-limit=3600 & # Worker async — exécute les messages d'ingestion déclenchés par le scheduler _supervise async \ php bin/console messenger:consume async \ --env=prod --no-debug --memory-limit=256M --time-limit=3600 & # Lance FrankenPHP (comportement par défaut de l'image de base) exec frankenphp run --config /etc/caddy/Caddyfile "$@"