Files
ISMAIL MASSERAN 94ecbe5887 first init
2026-06-08 11:37:14 +08:00

70 lines
1.8 KiB
Bash

#!/bin/sh
set -e
echo "Starting Laravel entrypoint (Unified)..."
# Step 0: Wait for DB if configured
if [ -n "${DB_HOST:-}" ]; then
echo "Waiting for DB at ${DB_HOST}:${DB_PORT:-5432}..."
# Wait up to ~60s (60 * 1s)
i=0
while ! nc -z "$DB_HOST" "${DB_PORT:-5432}"; do
i=$((i + 1))
if [ "$i" -ge 60 ]; then
echo "DB not reachable after 60s. Continuing anyway."
break
fi
sleep 1
done
echo "DB check finished."
fi
# Step 1: Initialize persistent storage if needed
if [ ! "$(ls -A /var/www/storage 2>/dev/null)" ]; then
echo "Initializing /var/www/storage..."
cp -R /var/www/storage-init/. /var/www/storage
chown -R www-data:www-data /var/www/storage
else
echo "/var/www/storage already initialized."
fi
rm -rf /var/www/storage-init
# Step 2: Ensure environment is ready
if [ ! -f .env ]; then
echo ".env file is missing!"
echo "Provide it at runtime (bind mount, env_file, or secret) to /var/www/.env."
exit 1
fi
# Ensure bootstrap/cache directory exists and writable BEFORE artisan
if [ ! -d bootstrap/cache ]; then
echo "Creating bootstrap/cache directory..."
mkdir -p bootstrap/cache
fi
chown -R www-data:www-data bootstrap/cache
# Step 3: Laravel setup and optimization
php artisan storage:link || true
php artisan config:clear
php artisan config:cache
php artisan route:cache
php artisan event:cache
php artisan package:discover --ansi
# Step 4: Set permissions
chown -R www-data:www-data /var/www/storage
chown -R www-data:www-data /var/www/bootstrap/cache
# Step 5: Ensure Laravel log directory exists
mkdir -p /var/www/storage/logs
chown -R www-data:www-data /var/www/storage/logs
# Step 6: Create supervisor log directories
mkdir -p /var/log/supervisor
chown -R root:root /var/log/supervisor
echo "Laravel setup complete. Starting Supervisor..."
exec supervisord -c /etc/supervisor/supervisord.conf