diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..b1fbf8b --- /dev/null +++ b/Dockerfile @@ -0,0 +1,24 @@ +FROM node:22.12-alpine AS builder + +# Must be entire project because `prepare` script is run during `npm install` and requires all files. +COPY . /app + +WORKDIR /app + +RUN --mount=type=cache,target=/root/.npm npm install + +RUN npm run build + +FROM node:22-alpine AS release + +COPY --from=builder /app/dist /app/dist +COPY --from=builder /app/package.json /app/package.json +COPY --from=builder /app/package-lock.json /app/package-lock.json + +ENV NODE_ENV=production + +WORKDIR /app + +RUN npm ci --ignore-scripts --omit-dev + +ENTRYPOINT ["node", "/app/dist/index.js"]