#!/bin/sh set -e cd /app # Ensure storage subdirs exist mkdir -p storage/framework/{cache,sessions,views,testing} storage/logs storage/app/public bootstrap/cache chown -R www-data:www-data storage bootstrap/cache 2>/dev/null || true # Run migrations on first boot (idempotent) if [ "${RUN_MIGRATIONS:-true}" = "true" ]; then echo "[entrypoint] Running migrations..." php artisan migrate --force --no-interaction || echo "[entrypoint] migrate failed (non-fatal)" fi # Run seeders if requested. Uses firstOrCreate so it's idempotent. if [ "${RUN_SEED:-false}" = "true" ]; then echo "[entrypoint] Running database seed..." php artisan db:seed --force --no-interaction || echo "[entrypoint] seed failed (non-fatal)" fi # Production caches if [ "${APP_ENV:-production}" = "production" ]; then echo "[entrypoint] Caching config/routes/views..." php artisan config:cache --no-interaction || true php artisan route:cache --no-interaction || true php artisan view:cache --no-interaction || true php artisan event:cache --no-interaction || true php artisan filament:cache-components --no-interaction || true fi # Storage symlink (idempotent) php artisan storage:link --no-interaction 2>/dev/null || true echo "[entrypoint] Starting: $@" exec "$@"