2025-06-17 12:47:14 +08:00
|
|
|
#!/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"
|
2025-06-20 09:58:03 +08:00
|
|
|
cd "$TARGET_DIR"
|
2025-06-17 12:47:14 +08:00
|
|
|
else
|
2025-06-18 15:02:28 +08:00
|
|
|
echo "[entrypoint] Repository already present, pulling."
|
2025-06-20 09:58:03 +08:00
|
|
|
cd "$TARGET_DIR"
|
2025-06-18 15:02:28 +08:00
|
|
|
git pull origin "$BRANCH"
|
2025-06-17 12:47:14 +08:00
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
|
|
# 2) Laravel 基礎安裝
|
2025-06-18 15:02:28 +08:00
|
|
|
[ -d vendor ] || composer install --no-interaction --prefer-dist
|
2025-06-17 12:47:14 +08:00
|
|
|
[ -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%/}"
|
2025-06-18 15:31:01 +08:00
|
|
|
update_env DB_HOST "$DB_HOST"
|
|
|
|
update_env DB_PORT "$DB_PORT"
|
2025-06-20 09:58:03 +08:00
|
|
|
update_env REDIS_HOST "$DB_PORT"
|
|
|
|
update_env REDIS_PORT "$DB_PORT"
|
|
|
|
update_env SESSION_DRIVER "$SESSION_DRIVER"
|
|
|
|
update_env QUEUE_CONNECTION "$QUEUE_CONNECTION"
|
|
|
|
update_env CACHE_STORE "$CACHE_STORE"
|
2025-06-17 12:47:14 +08:00
|
|
|
|
|
|
|
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
|