# -------- Base image -------- FROM node:22-alpine AS base ENV NODE_ENV=production WORKDIR /app # -------- Dependencies layer ------- FROM base AS deps WORKDIR /app RUN corepack enable # Copy package.json and lockfile COPY package.json pnpm-lock.yaml .npmrc ./ # Install dependencies with cache RUN --mount=type=cache,target=/root/.local/share/pnpm/store pnpm install # -------- Build layer ------- FROM deps AS build # Copy entire project COPY . ./ ENV NITRO_PRESET=node-server # Build the project RUN pnpm run build # ------- Runtime layer ------- FROM base AS runtime WORKDIR /app # COPY .output folder COPY --from=build /app/.output ./ ARG BUILD_TIME ARG GIT_COMMIT RUN echo "{\"buildTime\":\"$BUILD_TIME\",\"gitCommit\":\"$GIT_COMMIT\"}" > /app/version.json COPY entrypoint.sh /entrypoint.sh RUN chmod +x /entrypoint.sh ENV PORT=3000 ENV NITRO_PRESET=node-server ENV HOST=0.0.0.0 EXPOSE 3000 ENTRYPOINT ["/entrypoint.sh"] CMD ["node", "/app/server/index.mjs"]