gists/Dofckerfile sveltekit node.md

31 lines
682 B
Markdown

This Dockerfile maximizes layer caching through `pnpm fetch` and multi-step dependencies installation.
See https://pnpm.io/docker#example-3-build-on-cicd
```dockerfile
FROM node:22-alpine AS base
ENV PNPM_HOME="/pnpm"
ENV PATH="$PNPM_HOME:$PATH"
RUN corepack enable
WORKDIR /app
# Fetch dependencies
FROM base AS install
COPY pnpm-lock.yaml ./
RUN pnpm fetch
COPY . .
RUN pnpm install --offline --prod --frozen-lockfile
# Install dev dependencies
RUN pnpm install --offline --frozen-lockfile
# Build
ENV NODE_ENV=production
RUN pnpm build
ENTRYPOINT ["node", "build"]
EXPOSE 3000
```
You can safely clean with `docker builder prune --f` after that. It won't touch the cache.