74 lines
1.9 KiB
Bash
74 lines
1.9 KiB
Bash
|
#!/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
|
|||
|
echo "🔧 Cloning project from ${GIT_REPO_URL}..."
|
|||
|
git clone "$GIT_REPO_URL" html
|
|||
|
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
|