gists/Dockerfile SvelteKit Node.md

734 B

This Dockerfile maximizes layer caching usage for SvelteKit apps (node adapter).

See https://pnpm.io/docker#example-3-build-on-cicd

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 . .
# Install production dependencies
RUN pnpm install --offline --prod --frozen-lockfile

# Install dev dependencies (needed for the build step)
RUN pnpm install --offline --frozen-lockfile

# Build the app
ENV NODE_ENV=production
RUN pnpm build

ENTRYPOINT ["node", "build"]
EXPOSE 3000

You can then safely execute docker builder --prune -f to clean without destroying the cache.