Files
pipeline/docker/edge/Dockerfile.frontend.prod
T
chpark 3a2f9c2dd1
Build and Push Images / build-and-push (push) Has been cancelled
fix(frontend): SERVER_API_URL 빌드 시점 주입 — next.config rewrites() 가 build-time 베이크
Next.js rewrites 는 빌드 시점에 평가되므로 SERVER_API_URL 미주입 시
fallback 127.0.0.1:8080 이 베이크되어 컨테이너에서 ECONNREFUSED.
ARG SERVER_API_URL 로 받아 ENV 노출 → 빌드 시 http://pipeline-backend:8080 으로 베이크.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-13 20:43:36 +09:00

43 lines
1.3 KiB
Docker

# 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"]