# syntax=docker/dockerfile:1.7 FROM node:22-alpine AS deps WORKDIR /app RUN corepack enable COPY package.json pnpm-lock.yaml* ./ RUN --mount=type=cache,target=/root/.local/share/pnpm/store \ pnpm install --frozen-lockfile FROM node:22-alpine AS build WORKDIR /app RUN corepack enable ENV NODE_ENV=production COPY --from=deps /app/node_modules ./node_modules COPY . . RUN pnpm build FROM node:22-alpine AS runtime WORKDIR /app ENV NODE_ENV=production \ PORT=4321 \ HOST=0.0.0.0 RUN addgroup -S app && adduser -S app -G app COPY --from=build --chown=app:app /app/dist ./dist COPY --from=build --chown=app:app /app/node_modules ./node_modules COPY --from=build --chown=app:app /app/package.json ./ USER app EXPOSE 4321 HEALTHCHECK --interval=30s --timeout=5s --start-period=20s --retries=3 \ CMD wget -qO- http://127.0.0.1:4321/api/health || exit 1 CMD ["node", "./dist/server/entry.mjs"]