Skip to content

Latest commit

 

History

History

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 

README.md

pnpm base Docker image

Official base image for pnpm, published to GitHub Container Registry.

ghcr.io/pnpm/pnpm

Based on debian:stable-slim with the pnpm standalone binary. Node.js is not bundled — install the version you need inside your own image with pnpm runtime set node <version> -g (the -g flag makes node available on PATH for subsequent layers and at runtime).

Tags

Tag Meaning
<version> Exact, immutable (e.g. 11.0.0). Includes prereleases.
<major> Tracks the latest stable release within that major (e.g. 11).
latest Most recent stable pnpm release. Not updated for prereleases.

Supported platforms

linux/amd64, linux/arm64.

Usage

Install Node.js explicitly with pnpm runtime set:

FROM ghcr.io/pnpm/pnpm:latest
RUN pnpm runtime set node 22 -g
WORKDIR /app
COPY . .
RUN pnpm install --frozen-lockfile
CMD ["node", "index.js"]

Or let pnpm install Node.js from devEngines.runtime in your package.json:

{
  "devEngines": {
    "runtime": {
      "name": "node",
      "version": "22.x",
      "onFail": "download"
    }
  }
}
FROM ghcr.io/pnpm/pnpm:latest
WORKDIR /app
COPY package.json pnpm-lock.yaml ./
RUN pnpm install --frozen-lockfile
COPY . .
CMD ["pnpm", "start"]

Build locally

VERSION=11.0.0-rc.2
SHA=$(curl -fsSL "https://github.com/pnpm/pnpm/releases/download/v${VERSION}/pnpm-linux-x64.tar.gz" \
      | sha256sum | awk '{print $1}')
docker buildx build \
  --build-arg PNPM_VERSION=${VERSION} \
  --build-arg PNPM_SHA256_AMD64=${SHA} \
  --platform linux/amd64 \
  --load \
  -t pnpm-test ./docker
docker run --rm pnpm-test pnpm --version

Release

Images are built and pushed by .github/workflows/docker.yml on release: published, or manually via workflow_dispatch. The build fails if pnpm --version in the image doesn't match the PNPM_VERSION build-arg.