FROM node:22-alpine

# 개발용 도구 설치 및 시간대 설정
RUN apk add --no-cache wget git tzdata && \
    ln -sf /usr/share/zoneinfo/Asia/Seoul /etc/localtime

# 보안: non-root 사용자 생성
RUN addgroup -g 1001 -S appgroup && \
    adduser -S appuser -u 1001 -G appgroup

WORKDIR /app

# 패키지 파일 복사 (캐시 효율 최적화)
COPY --chown=appuser:appgroup package*.json ./
COPY --chown=appuser:appgroup pnpm-lock.yaml* ./

# 패키지 매니저별 조건부 설치
RUN if [ -f pnpm-lock.yaml ]; then \
      corepack enable pnpm && pnpm install; \
    else \
      npm install; \
    fi

# 소스 코드 복사
COPY --chown=appuser:appgroup . .

# 개발용 환경변수
ENV NODE_ENV=development \
    TZ=Asia/Seoul \
    PORT=3000

# non-root 사용자로 전환
USER appuser

# 포트 노출
EXPOSE 3000

# 헬스체크 (wget 사용)
HEALTHCHECK --interval=30s --timeout=3s --start-period=10s --retries=3 \
  CMD wget --no-verbose --tries=1 --spider http://localhost:3000/health || exit 1

# 개발 서버 실행
CMD ["sh", "-c", "if [ -f pnpm-lock.yaml ]; then pnpm dev; else npm run dev; fi"]