Sign inSign up

nicklpeterson/pnpm-node

By nicklpeterson

Updated 2 minutes ago

Node.js v22+ & pnpm v11+ images for every supported version pair with Alpine and Bookworm variants.

Image
Languages & frameworks
Integration & delivery
Developer tools
0

10K+

nicklpeterson/pnpm-node repository overview

pnpm-node

Up-to-date Docker images with Node.js and pnpm preinstalled.

pnpm-node provides a complete, predictable set of Node.js + pnpm images across supported Node.js major versions, pnpm 11+, with Alpine and Bookworm variants.

If you need a version of pnpm below 11 use guergeiro/pnpm.

Quick start

FROM nicklpeterson/pnpm-node:26-12-alpine
# FROM nicklpeterson/pnpm-node:26-12-bookworm

WORKDIR /app

COPY package.json pnpm-lock.yaml ./

RUN pnpm install --frozen-lockfile

COPY . .

CMD ["pnpm", "start"]

Or pull an image directly:

docker pull nicklpeterson/pnpm-node:26-12-alpine

What's inside the image?

ARG NODE_VERSION
ARG PNPM_VERSION
ARG VARIANT

FROM node:${NODE_VERSION}-${VARIANT}

RUN npm install --global --allow-scripts=pnpm "pnpm@${PNPM_VERSION}"

Source

https://github.com/nicklpeterson/pnpm-node

pnpm versions

The project retains pnpm releases so that older pnpm versions remain available when applications need them.

Examples include:

11.0.0
11.1.0
11.10.0
11.27.1

12.0.0
12.2.0
12.3.0
12.5.1

Check the available tags for the complete current list.

Node.js versions

The project tracks a current release for each supported Node.js major line.

22.x
24.x
26.x

Major-version aliases use the Node.js patch version currently tracked by the project.

Fully pinned tags expose the exact Node.js version used.

Tag format

Tags follow this format:

<node>-<pnpm>-<variant>

Examples:

22-12-alpine
22-12-bookworm

24-11-alpine
24-11-bookworm

26-12.5-alpine
26-12.5.1-bookworm

26-12.5.1-alpine

Several levels of version specificity are published.

Architecture support

Images are published as multi-platform images for:

linux/amd64
linux/arm64

Docker automatically selects the appropriate image for your system.

For example, the same tag can be used on:

  • x86-64 Linux servers
  • ARM64 Linux systems
  • Apple Silicon Docker environments
  • compatible ARM64 development machines

Example application image

FROM <dockerhub-user>/pnpm-node:26-12-bookworm

WORKDIR /app

COPY package.json pnpm-lock.yaml ./

RUN pnpm install --frozen-lockfile

COPY . .

RUN pnpm build

CMD ["pnpm", "start"]

Multi-stage build example

You can also use pnpm-node in multi-stage builds:

FROM nicklpeterson/pnpm-node:26-12-bookworm AS build

WORKDIR /app

COPY package.json pnpm-lock.yaml ./

RUN pnpm install --frozen-lockfile

COPY . .

RUN pnpm build


FROM node:26-bookworm

WORKDIR /app

COPY --from=build /app/dist ./dist
COPY --from=build /app/package.json ./

CMD ["node", "dist/index.js"]

This lets you use pnpm for dependency installation and builds without necessarily including pnpm in the final runtime image.

Private npm registries

Standard npm-compatible configuration can be supplied by downstream users.

For example:

NPM_CONFIG_REGISTRY=https://registry.example.com/

In CI:

env:
  NPM_CONFIG_REGISTRY: https://registry.example.com/

Or during a Docker build:

FROM nicklpeterson/pnpm-node:26-12-bookworm

ARG NPM_CONFIG_REGISTRY

RUN pnpm install --frozen-lockfile

Updating images

Images are built automatically from the project's version matrix.

When a tracked Node.js version or pnpm version changes, the relevant floating tags are updated.

For example:

26-12-alpine

can move forward as newer Node.js 26 and pnpm 12 releases are added.

Fully pinned tags such as:

26.9.0-12.5.1-alpine

identify a specific Node.js + pnpm combination.

Tag summary

Content type

Image

Digest

sha256:43509f01c

Size

440.3 MB

Last updated

2 minutes ago

docker pull nicklpeterson/pnpm-node:26.9.0-12.1.0-bookworm