diff --git a/docker/php/entrypoint.sh b/docker/php/entrypoint.sh index 7106988..603dc0b 100644 --- a/docker/php/entrypoint.sh +++ b/docker/php/entrypoint.sh @@ -1,13 +1,39 @@ #!/bin/bash set -e -echo "[+] Starting Laravel..." +echo "[+] Starting Laravel Initialization Script..." +# ۱. ساخت پوشه‌های حیاتی لاراول که احتمال دارد به خاطر مونت شدن حذف شده باشند +echo "[+] Ensuring Laravel storage and cache directories exist..." +mkdir -p storage/framework/cache/data \ + storage/framework/views \ + storage/framework/sessions \ + storage/logs \ + bootstrap/cache[cite: 4, 5] + +# ۲. مدیریت فایل تنظیمات محیطی if [ ! -f .env ]; then + echo "[+] .env file not found, creating from .env.example..." cp .env.example .env fi -# فقط اگر key وجود نداشت -grep -q "APP_KEY=" .env || php artisan key:generate --force +# ۳. تولید کلید اختصاصی اپلیکیشن در صورت عدم وجود +if ! grep -q "APP_KEY=base64:" .env; then + echo "[+] Generating application key..." + php artisan key:generate --force +fi -exec php-fpm +# ۴. پاک‌سازی کش‌های قدیمی فریم‌ورک برای جلوگیری از خطای Valid cache path +echo "[+] Clearing stale Laravel configurations and views..." +php artisan config:clear || true +php artisan view:clear || true +php artisan cache:clear || true[cite: 7] + +# ۵. تنظیم دسترسی کامل خواندن و نوشتن برای سازگاری کامل داکر و سیستم میزبان +echo "[+] Setting permissions for storage and bootstrap/cache..." +chmod -R 777 storage bootstrap/cache[cite: 5] + +echo "[+] Laravel is ready! Launching application..." + +# استفاده از "$@" به جای هاردکد کردن php-fpm باعث می‌شود کانتینر دستورات CMD را به درستی بپذیرد +exec "$@"