#!/bin/sh set -e echo "========================================" echo "Starting container setup..." echo "========================================" # Show current user and directory echo "Current user: $(whoami)" echo "Current directory: $(pwd)" # Create ALL required Laravel directories echo "Creating storage directories..." mkdir -p storage/framework/cache mkdir -p storage/framework/sessions mkdir -p storage/framework/views mkdir -p storage/framework/testing mkdir -p storage/logs mkdir -p bootstrap/cache # Also create the view cache directory (sometimes needed) mkdir -p storage/framework/views # Set permissions echo "Setting permissions..." chmod -R 777 storage chmod -R 777 bootstrap/cache # Create cache file if it doesn't exist touch storage/framework/cache/.gitignore touch storage/framework/sessions/.gitignore touch storage/framework/views/.gitignore touch storage/logs/.gitignore # Verify directories exist echo "Verifying directories..." ls -la storage/framework/ ls -la bootstrap/ # Check if .env exists, create if not if [ ! -f .env ]; then echo "Creating .env file..." if [ -f .env.example ]; then cp .env.example .env else cat > .env << 'EOF' APP_NAME=Laravel APP_ENV=local APP_KEY= APP_DEBUG=true APP_URL=http://localhost LOG_CHANNEL=stack EOF fi fi # Generate key if not present if ! grep -q "APP_KEY=" .env || grep -q "APP_KEY=$" .env; then echo "Generating application key..." php artisan key:generate --no-interaction --force || echo "Key generation failed" fi # Clear all caches to ensure fresh state echo "Clearing caches..." php artisan config:clear || true php artisan cache:clear || true php artisan view:clear || true php artisan route:clear || true # Optional: Run migrations if needed # php artisan migrate --force echo "========================================" echo "Setup complete. Starting application..." echo "========================================" # Start the application with proper error handling if [ "$MODE" = "staging" ]; then echo "Starting PHP built-in server on port 8000..." # Use exec with error capture exec php artisan serve --host=0.0.0.0 --port=8000 2>&1 | tee -a /var/log/php-server.log else echo "Starting PHP-FPM on port 9000..." # Ensure PHP-FPM is properly configured exec php-fpm -F fi