# 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

RUN corepack enable

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

COPY . .

RUN pnpm run build

# Production
FROM base AS production

ENV PORT=${PORT}
ENV NODE_ENV=production

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

RUN apt-get update && apt-get -fy install curl && rm -rf /var/cache/apt/*

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

RUN corepack enable
ENTRYPOINT [ "pnpm", "run", "dev" ]
