# 1단계: 빌드 스테이지 (Vite 8 요구사항: Node 22+) FROM node:22-alpine AS builder WORKDIR /app COPY package*.json ./ RUN npm ci COPY . . # 실제 서비스 도메인 (canonical / sitemap / robots / JSON-LD 자동 반영) ARG VITE_SITE_ORIGIN=https://teacherpick.kr ENV VITE_SITE_ORIGIN=$VITE_SITE_ORIGIN # 사이트맵(50,383개 URL) + 클라이언트 번들(dist) + SSR 번들(dist-ssr) 초고속 빌드 RUN npm run build:fast # 2단계: 프로덕션 온디맨드 SSR 서버 스테이지 (Nginx Proxy Manager -> teacherpick_frontend:80) FROM node:22-alpine AS runner WORKDIR /app ENV NODE_ENV=production ENV PORT=80 ENV HOST=0.0.0.0 ENV VITE_SITE_ORIGIN=https://teacherpick.kr COPY --from=builder /app/package.json ./package.json COPY --from=builder /app/server.js ./server.js COPY --from=builder /app/dist ./dist COPY --from=builder /app/dist-ssr ./dist-ssr EXPOSE 80 CMD ["node", "server.js"]