#!/usr/bin/env bash set -e REPO_URL=${REPO_URL} BRANCH=${BRANCH:-main} TARGET_DIR=/var/www/html # 1) 初次 clone 或拉取 if [ -z "$(ls -A "$TARGET_DIR")" ]; then echo "[entrypoint] Cloning $BRANCH from $REPO_URL ..." git clone --branch "$BRANCH" "$REPO_URL" "$TARGET_DIR" else echo "[entrypoint] Repository already present, pulling." git pull origin "$BRANCH" fi cd "$TARGET_DIR" # 2) Laravel 基礎安裝 [ -d vendor ] || composer install --no-interaction --prefer-dist [ -f .env ] || cp .env.example .env update_env() { local k=$1 v=$2; grep -q "^$k=" .env && sed -i "s|^$k=.*|$k=$v|" .env || echo "$k=$v" >> .env; } update_env APP_NAME "$APP_NAME" update_env APP_URL "${APP_URL%/}" php artisan key:generate --force php artisan migrate --force [ -d node_modules ] || npm install npm run build chown -R www-data:www-data storage bootstrap/cache chmod -R 775 storage bootstrap/cache mkdir -p /var/www/logs supervisord -c /etc/supervisor/conf.d/supervisord.conf & php-fpm -D envsubst '${NGINX_HOST} ${NGINX_PORT}' < /etc/nginx/templates/default.conf.template > /etc/nginx/conf.d/default.conf exec nginx -g "daemon off;" echo "0 0 * * * root /usr/sbin/logrotate /etc/logrotate.d/app" > /etc/cron.d/logrotate-Laravel chmod 0644 /etc/cron.d/logrotate-Laravel echo "[entrypoint] Testing logrotate config..." logrotate --debug /etc/logrotate.d/app/laravel.conf