# LPS 관리자 UI 이미지 — Vite(React) 정적 빌드 → nginx 서빙.
# nginx 가 /v1·/healthz·/readyz 를 lps-api:9600 으로 프록시(동일출처)하므로,
# 앱은 상대경로로 API 를 호출한다(client.ts baseUrl 빈값) → 빌드 타임 API URL 주입 불필요.
# 빌드는 slim(glibc) — alpine(musl)+esbuild 의 ETXTBSY 회피(negodata/front 선례).
FROM node:22-slim AS build

WORKDIR /app

# 의존성 먼저 (레이어 캐시). package-lock 고정 설치.
COPY package.json package-lock.json ./
RUN npm ci

COPY . .
RUN npm run build          # tsc -b && vite build → dist/

# ── 런타임: 정적 서빙 + API 프록시 ──
FROM nginx:1.27-alpine

COPY nginx.conf /etc/nginx/conf.d/default.conf
COPY --from=build /app/dist /usr/share/nginx/html

EXPOSE 80

# UI 자체 도달성만 확인(index.html) — API 상태는 앱 대시보드가 lps-api 를 직접 폴링한다.
HEALTHCHECK --interval=30s --timeout=5s --start-period=10s --retries=3 \
  CMD wget -qO- http://127.0.0.1/ >/dev/null 2>&1 || exit 1
