FROM node:20-alpine AS dependencies

WORKDIR /app

COPY package.json package-lock.json .npmrc ./
RUN npm ci

FROM dependencies AS development

COPY . .

ENV NODE_ENV=development
EXPOSE 3701

CMD ["npm", "run", "dev"]

FROM node:20-alpine AS runtime

WORKDIR /app

ENV NODE_ENV=production

COPY package.json package-lock.json .npmrc ./
RUN npm ci --omit=dev && npm cache clean --force

COPY --chown=node:node . .

USER node

EXPOSE 3701

HEALTHCHECK --interval=30s --timeout=3s --start-period=10s --retries=3 \
  CMD wget --quiet --spider http://127.0.0.1:3701/health || exit 1

CMD ["npm", "start"]
