#!/bin/bash set -e SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" cd "$SCRIPT_DIR" # .env 로드 ENV_FILE="$SCRIPT_DIR/../.env" if [ -f "$ENV_FILE" ]; then set -a && source "$ENV_FILE" && set +a fi # 필수 환경변수 검증 echo "=== [0/3] 환경변수 검증 ===" REQUIRED_VARS=("NEXT_PUBLIC_GOOGLE_CLIENT_ID" "NEXT_PUBLIC_API_URL") for var in "${REQUIRED_VARS[@]}"; do if [ -z "${!var}" ]; then echo "ERROR: $var 가 .env에 설정되어 있지 않습니다. 빌드를 중단합니다." exit 1 fi echo " $var = ${!var:0:20}..." done echo "=== [1/3] Next.js 빌드 ===" npx next build echo "=== [2/3] 심볼릭 링크 생성 ===" STANDALONE_DIR="$SCRIPT_DIR/.next/standalone" # static 링크 STATIC_SRC="$SCRIPT_DIR/.next/static" STATIC_DST="$STANDALONE_DIR/.next/static" mkdir -p "$STANDALONE_DIR/.next" if [ -L "$STATIC_DST" ] || [ -e "$STATIC_DST" ]; then rm -rf "$STATIC_DST" fi ln -s "$STATIC_SRC" "$STATIC_DST" echo "링크 생성 완료: $STATIC_DST -> $STATIC_SRC" # standalone output이 subdirectory에 생성되는 경우 대응 if [ -d "$STANDALONE_DIR/sundol-frontend" ]; then # server.js 링크 if [ ! -f "$STANDALONE_DIR/server.js" ] && [ -f "$STANDALONE_DIR/sundol-frontend/server.js" ]; then ln -sf "$STANDALONE_DIR/sundol-frontend/server.js" "$STANDALONE_DIR/server.js" echo "server.js 링크 생성 완료" fi # nested static 링크 NESTED_STATIC="$STANDALONE_DIR/sundol-frontend/.next/static" if [ ! -L "$NESTED_STATIC" ] && [ ! -e "$NESTED_STATIC" ]; then ln -s "$STATIC_SRC" "$NESTED_STATIC" echo "nested static 링크 생성 완료" fi fi echo "=== [3/3] PM2 재시작 ===" pm2 restart sundol-frontend echo "=== 빌드 완료 ==="