#!/bin/bash cd /var/www # Remove trailing slash from APP_DOMAIN if exists APP_DOMAIN="${APP_DOMAIN%/}" # 預設 Redis 設定 : "${REDIS_HOST:=redis}" : "${REDIS_PORT:=6379}" # Clone 專案(只有第一次) if [ ! -d "html" ]; then if [ -n "$GIT_REPO_URL" ]; then echo "🔧 Cloning project from ${GIT_REPO_URL}..." git clone "$GIT_REPO_URL" html else echo "❌ GIT_REPO_URL not set. Skipping clone." exit 1 fi fi cd html # Composer install echo "📦 Running composer install..." composer install --no-interaction --prefer-dist # 複製 .env if [ ! -f ".env" ]; then echo "⚙️ Copying .env.example to .env" cp .env.example .env fi # 更新 .env 設定 echo "🛠 Updating .env configurations..." update_env_var() { local key=$1 local value=$2 grep -q "^${key}=" .env && \ sed -i "s|^${key}=.*|${key}=${value}|" .env || \ echo "${key}=${value}" >> .env } update_env_var "APP_URL" "$APP_DOMAIN" update_env_var "L5_SWAGGER_CONST_HOST" "$APP_DOMAIN" update_env_var "DB_DATABASE" "$DB_DATABASE" update_env_var "DB_USERNAME" "$DB_USERNAME" update_env_var "DB_PASSWORD" "$DB_PASSWORD" update_env_var "REDIS_HOST" "$REDIS_HOST" update_env_var "REDIS_PORT" "$REDIS_PORT" update_env_var "QUEUE_CONNECTION" "$QUEUE_CONNECTION" update_env_var "CACHE_DRIVER" "$CACHE_DRIVER" update_env_var "SESSION_DRIVER" "$SESSION_DRIVER" # Laravel 初始化 echo "🔑 Generating Laravel app key..." php artisan key:generate echo "🧱 Running migrations..." php artisan config:clear && cache:clear php artisan migrate --force # 安裝 Node 套件與建構前端 echo "🌐 Installing npm packages..." [ ! -d "node_modules" ] && npm install echo "🛠 Building front-end assets..." npm run build # 加入 Laravel Schedule 到 crontab(避免重複) echo "⏱ Adding schedule:run to crontab..." crontab -l 2>/dev/null | grep -q 'schedule:run' || \ (echo "* * * * * cd /var/www/html && php artisan schedule:run >> /dev/null 2>&1" | crontab -) # 啟動 supervisord(同時啟動 queue + cron + php-fpm) echo "🚀 Starting supervisord..." exec supervisord -n