# syntax = docker/dockerfile:1 ARG NODE_VERSION=23.11.0-slim FROM node:${NODE_VERSION} AS base ARG PORT=3000 WORKDIR /app # 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 RUN apt-get update && apt-get -fy install curl && rm -rf /var/cache/apt/* COPY --from=build /app/.output /app/.output COPY --from=build /app/site /app/site 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" ]