Skip to content
QuenchWorks

node 24.18.0

Runtime · Language runtime · standard · v24.18.0

A+nonrootcosign signedSPDX SBOMSLSA provenanceamd64 · arm64

Hardened Node.js runtime with npm, a 0-CVE signed nonroot base image for JavaScript apps. Active LTS lines (20/22/24).

Version line

The latest line lives at the base page; older lines have their own page so you can pin and verify exactly that version.

Signed
cosign keyless
SBOM
SPDX, on digest
Provenance
SLSA build
Architectures
amd64, arm64
Runs as
nonroot (uid 1001)
Image size
56.1 MB
Last rebuilt
2026-07-28

Security report (Trivy)

A+· 100/1000 fixable CVEs
0
Critical
0
High
0
Medium
0
Low
0
Unknown

Security report (Trivy) · node 24.18.0

Published versions

3 tags

Each tag is a multi-arch index (amd64 + arm64) pinned by digest. Tagged by version, never :latest.

VersionSizePublishedDigest
26.5.0latest60.3 MB2026-07-28sha256:b54769c85510…
24.18.056.1 MB2026-07-28sha256:eca7dbc8936c…
22.23.155.7 MB2026-07-28sha256:853d071634fa…

Use it as a base image

Reference it in the FROM line of your Dockerfile. Nonroot, read-only root filesystem, built for amd64 and arm64.

FROM ghcr.io/quenchworks/images/node:24.18.0

Or pull it directly

docker pull ghcr.io/quenchworks/images/node:24.18.0
Version line
24.18.0
Latest line
24.18.0, 26.5.0, 22.23.1
Architectures
amd64, arm64
Runs as
nonroot (uid 1001)
Root filesystem
read-only
License
MIT

Verify the supply chain

This image is cosign-signed and carries an SPDX SBOM and a SLSA build-provenance attestation on the same digest. Check all three before you build on it:

# 1. signature — built and signed by QuenchWorks CI
cosign verify ghcr.io/quenchworks/images/node:24.18.0 \
  --certificate-identity-regexp 'https://github.com/quenchworks/.+' \
  --certificate-oidc-issuer https://token.actions.githubusercontent.com

# 2. SLSA build provenance — which workflow built it, from what
cosign verify-attestation --type https://slsa.dev/provenance/v1 ghcr.io/quenchworks/images/node:24.18.0 \
  --certificate-identity-regexp 'https://github.com/quenchworks/.+' \
  --certificate-oidc-issuer https://token.actions.githubusercontent.com

# 3. SPDX SBOM — the package inventory
cosign verify-attestation --type https://spdx.dev/Document/v2.3 ghcr.io/quenchworks/images/node:24.18.0 \
  --certificate-identity-regexp 'https://github.com/quenchworks/.+' \
  --certificate-oidc-issuer https://token.actions.githubusercontent.com

See the SBOM & provenance guide for reading the SBOM and using these checks in CI.

Best-practice Dockerfile for 24.18.0

The four-stage pnpm pattern: a shared base, a prod-only dependency stage, a build stage with the full dependency set, and a slim final stage that ships only the production node_modules and the built dist.

ghcr.io/quenchworks/images/node:24.18.056.1 MBrebuilt 2 days ago
# Base: a common starting point for the dependency and build stages.
FROM ghcr.io/quenchworks/images/node:24.18.0 AS base
WORKDIR /app
ENV PNPM_HOME=/tmp/pnpm \
npm_config_cache=/tmp/npm
# prod-deps: resolve production dependencies only.
FROM base AS prod-deps
COPY package.json pnpm-lock.yaml ./
RUN ["corepack", "enable"]
RUN ["pnpm", "install", "--prod", "--frozen-lockfile"]
# build: install the full dependency set and build.
FROM base AS build
COPY package.json pnpm-lock.yaml ./
RUN ["corepack", "enable"]
RUN ["pnpm", "install", "--frozen-lockfile"]
COPY . .
RUN ["pnpm", "run", "build"]
# final: prod node_modules + built dist on a clean node base, nonroot.
FROM ghcr.io/quenchworks/images/node:24.18.0 AS final
WORKDIR /app
ENV NODE_ENV=production
COPY --from=prod-deps /app/node_modules ./node_modules
COPY --from=build /app/dist ./dist
COPY --from=build /app/package.json ./package.json
USER 1001
EXPOSE 3000
CMD ["node", "dist/server.js"]

This Dockerfile is pinned to the 24.18.0 line. For the line-by-line walkthrough and ecosystem variants (npm/Yarn, pip/uv/Poetry, Maven/Gradle), see the Build a Node appguide.

Upstream project: https://github.com/nodejs/node