Repository navigation
chore(docker): harden base image against container-scan CVEs #5228
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -2,12 +2,28 @@ | |
| FROM node:24-trixie-slim AS base | ||
| WORKDIR /app | ||
|
|
||
| # `apt-get upgrade` pulls the security-patched versions of the Debian (trixie) | ||
| # base-image packages at build time — clears the subset of container-scan CVEs | ||
| # (perl / util-linux / systemd / ncurses / zlib / tar / sqlite / shadow / pam …) | ||
| # that already have a fix published in trixie. CVEs without an upstream fix yet | ||
| # (local-only TOCTOU, etc.) remain until the distro patches them and the image | ||
| # is rebuilt; none are reachable from the proxy's request surface at runtime. | ||
| RUN --mount=type=cache,target=/var/cache/apt,sharing=shared \ | ||
| --mount=type=cache,target=/var/lib/apt/lists,sharing=shared \ | ||
| apt-get update \ | ||
| && apt-get upgrade -y \ | ||
| && apt-get install -y --no-install-recommends libsecret-1-0 ca-certificates \ | ||
| && rm -rf /var/lib/apt/lists/* | ||
|
|
||
| # Refresh the globally-installed npm so its *bundled* node_modules (undici, tar) | ||
| # ship the patched versions. These are npm's own internals — not application | ||
| # dependencies (our app already resolves undici@8.5.0 / tar@7.5.16, both fixed) — | ||
| # but the container scanner flags the stale copies under | ||
| # /usr/local/lib/node_modules/npm/node_modules. npm is not invoked at runtime in | ||
| # the runner stages, so this is hygiene, not an exploitable runtime path. | ||
| RUN npm install -g npm@latest \ | ||
| && npm cache clean --force | ||
|
Comment on lines
+24
to
+25
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Instead of running |
||
|
|
||
| # ── Builder ──────────────────────────────────────────────────────────────── | ||
| FROM base AS builder | ||
|
|
||
|
|
||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
To prevent the build from hanging or failing due to interactive prompts during package upgrades, it is highly recommended to set
DEBIAN_FRONTEND=noninteractivewhen runningapt-get upgrade.