# Pipeline Frontend — 엣지 배포용 프로덕션 이미지 (next build standalone) # next.config 의 output: "standalone" 산출물을 그대로 실행. node .next/standalone/server.js # # 주의: next.config 의 rewrites() 는 빌드 시점에 환경변수를 평가하므로 # SERVER_API_URL 을 ARG 로 받아 ENV 로 노출한 뒤 빌드해야 한다. FROM node:20-bookworm-slim AS builder ARG SERVER_API_URL=http://pipeline-backend:8080 ENV SERVER_API_URL=$SERVER_API_URL WORKDIR /app COPY package*.json ./ RUN npm ci --prefer-offline --no-audit COPY . . # 프로덕션 빌드 (standalone) — rewrites() 가 SERVER_API_URL 을 베이크 ENV NEXT_TELEMETRY_DISABLED=1 RUN npm run build # ── Runtime 스테이지 ─────────────────────────────── FROM node:20-bookworm-slim WORKDIR /app ENV NODE_ENV=production ENV NEXT_TELEMETRY_DISABLED=1 ENV PORT=3000 ENV HOSTNAME=0.0.0.0 # standalone 산출물: server.js + minimal node_modules (자체 포함) COPY --from=builder /app/.next/standalone ./ # standalone 은 static/public 을 자기 트리 밖에서 찾으므로 같은 자리에 복사 COPY --from=builder /app/.next/static ./.next/static COPY --from=builder /app/public ./public EXPOSE 3000 CMD ["node", "server.js"]