# ── 1단계: 빌드 ─────────────────────────────────────────────────────────────── FROM node:20-alpine AS builder WORKDIR /app # 의존성 레이어 캐시 (package*.json 변경 시만 재설치) COPY package*.json ./ RUN npm ci # 소스 복사 후 프로덕션 빌드 # Docker 환경에서 /api 는 nginx 가 backend:8080 으로 프록시하므로 그대로 사용 COPY . . ARG VITE_API_BASE_URL=/api ARG VITE_APP_VERSION= ENV VITE_API_BASE_URL=${VITE_API_BASE_URL} ENV VITE_APP_VERSION=${VITE_APP_VERSION} RUN npm run build # ── 2단계: 서비스 ───────────────────────────────────────────────────────────── FROM nginx:1.27-alpine AS production # 빌드 결과물 복사 COPY --from=builder /app/dist /usr/share/nginx/html # SPA 라우팅 + 정적 파일 캐시 설정 COPY nginx.conf /etc/nginx/conf.d/default.conf EXPOSE 80 CMD ["nginx", "-g", "daemon off;"]