#!/bin/sh
set -e
cd /var/www/html
# Ensure Laravel's writable dirs exist (dev bind-mount may not have them yet).
mkdir -p \
storage/framework/cache \
storage/framework/sessions \
storage/framework/views \
storage/logs \
bootstrap/cache
# When running as root (the `app` service / prod), hand storage to the app user
# so php-fpm (which runs as `app`) can write. Non-root services (vite/queue/
# reverb run as the host UID) skip this — they already own the bind-mount.
if [ "$(id -u)" = "0" ]; then
chown -R app:app storage bootstrap/cache 2>/dev/null || true
fi
# Freeze the configured panel domain as the active one — ONLY in the web/app container
# (its CMD is supervisord). The queue/reverb workers share this entrypoint and, in dev,
# the same bind-mounted storage; snapshotting from a worker restart would apply a pending
# domain without an app restart, breaking the "applies on restart" boundary. Best-effort:
# a failure here must never block startup.
if [ "$1" = "supervisord" ]; then
php artisan clusev:snapshot-domain >/dev/null 2>&1 || true
fi
exec "$@"