# syntax = docker/dockerfile:1

ARG NODE_VERSION=23.11.0-slim

FROM node:${NODE_VERSION} AS base

ARG PORT=3000

WORKDIR /src

# Build
FROM base AS build

COPY package.json pnpm-lock.yaml ./
RUN npm install
RUN npm rebuild sharp

COPY . .

RUN npm run build

# Production
FROM base AS production

ENV PORT=${PORT}
ENV NODE_ENV=production

COPY --from=build /src/.output /src/.output

HEALTHCHECK --interval=30s --timeout=5s --start-period=10s --retries=3 \
  CMD curl -f http://localhost:${PORT}/api/health || exit 1

EXPOSE $PORT
CMD [ "node", ".output/server/index.mjs" ]

# Development
FROM base AS development
WORKDIR /app

ENTRYPOINT [ "npm", "run", "dev" ]
