52 lines
1.6 KiB
Bash
52 lines
1.6 KiB
Bash
|
|
#!/bin/bash
|
||
|
|
# =========================================================
|
||
|
|
# Laravel Setup Script
|
||
|
|
# =========================================================
|
||
|
|
|
||
|
|
# Load environment variables
|
||
|
|
if [ -f .env ]; then
|
||
|
|
export $(grep -v '^#' .env | sed 's/#.*//' | grep -E '^[A-Z0-9_]+=')
|
||
|
|
else
|
||
|
|
echo "❌ .env file not found. Exiting."
|
||
|
|
exit 1
|
||
|
|
fi
|
||
|
|
|
||
|
|
# Get project name from .env or default to 'app'
|
||
|
|
PROJECT_NAME=${PROJECT_NAME:-app}
|
||
|
|
APP_PATH="./laravel/$PROJECT_NAME"
|
||
|
|
|
||
|
|
# Create Laravel project if it doesn't exist
|
||
|
|
if [ ! -d "$APP_PATH" ]; then
|
||
|
|
echo "📦 Creating Laravel project in $APP_PATH..."
|
||
|
|
docker exec -it php bash -c "composer create-project --prefer-dist laravel/laravel $APP_PATH"
|
||
|
|
else
|
||
|
|
echo "✅ Laravel project already exists at $APP_PATH"
|
||
|
|
fi
|
||
|
|
|
||
|
|
# Copy .env.example if .env is missing
|
||
|
|
if [ ! -f "$APP_PATH/.env" ]; then
|
||
|
|
echo "📄 Copying .env.example to .env..."
|
||
|
|
docker exec -it php bash -c "cp $APP_PATH/.env.example $APP_PATH/.env"
|
||
|
|
else
|
||
|
|
echo "✅ .env already exists in $APP_PATH"
|
||
|
|
fi
|
||
|
|
|
||
|
|
# Generate APP_KEY if not set
|
||
|
|
APP_KEY_VALUE=$(docker exec -it php bash -c "cd $APP_PATH && php artisan key:generate --show")
|
||
|
|
if ! grep -q "^APP_KEY=" "$APP_PATH/.env"; then
|
||
|
|
echo "🔑 Setting APP_KEY in .env..."
|
||
|
|
sed -i "s|^APP_KEY=.*|APP_KEY=$APP_KEY_VALUE|" "$APP_PATH/.env"
|
||
|
|
else
|
||
|
|
echo "✅ APP_KEY already set"
|
||
|
|
fi
|
||
|
|
|
||
|
|
# Install Composer dependencies
|
||
|
|
echo "📦 Installing Composer dependencies..."
|
||
|
|
docker exec -it php bash -c "cd $APP_PATH && composer install"
|
||
|
|
|
||
|
|
# Set correct permissions
|
||
|
|
echo "🔧 Fixing permissions..."
|
||
|
|
docker exec -it php bash -c "chown -R www-data:www-data $APP_PATH"
|
||
|
|
|
||
|
|
echo "🎉 Laravel setup complete for project '$PROJECT_NAME'"
|