From 52d039fd9da73b9ed6768a15db59e70ba9918486 Mon Sep 17 00:00:00 2001 From: Amnoor Brar Date: Sat, 21 Mar 2026 21:36:51 +0800 Subject: [PATCH 1/5] feat: Add comprehensive Runtime Node topic with icon --- topics/runtime-node/index.md | 23 +++++++++++++++++++++++ topics/runtime-node/runtime-node.png | Bin 0 -> 48588 bytes 2 files changed, 23 insertions(+) create mode 100644 topics/runtime-node/index.md create mode 100644 topics/runtime-node/runtime-node.png diff --git a/topics/runtime-node/index.md b/topics/runtime-node/index.md new file mode 100644 index 00000000000..c2935ef5618 --- /dev/null +++ b/topics/runtime-node/index.md @@ -0,0 +1,23 @@ +--- +display_name: Runtime Node +short_description: A secure, distroless Node.js Docker base image built entirely FROM scratch. +topic: runtime-node +aliases: node-runtime, distroless-node +related: nodejs, docker, distroless, containers, security +github_url: https://github.com/Runtimes-Node/Runtime-Node +official_url: https://hub.docker.com/r/runtimenode/runtime-node +created_by: Runtimes-Node +--- + +**[Runtime Node](https://github.com/Runtimes-Node/Runtime-Node)** is an open-source, production-grade Docker base image tailored for executing [Node.js](https://github.com/topics/nodejs) applications with maximum security and minimal overhead. Managed under the **[Runtimes-Node](https://github.com/Runtimes-Node)** organization, it provides developers with a strictly distroless runtime environment for their containerized workloads. + +Unlike traditional Node.js base images built on Debian or Alpine Linux, Runtime Node is assembled entirely `FROM scratch`. It completely eliminates the operating system layer, shells (like `bash` or `sh`), package managers (`apt` or `apk`), and all system utilities. It achieves this by extracting only the hand-picked binaries and shared libraries strictly required by the Node.js runtime. + +### Key Characteristics + +* **Zero-Bloat Footprint:** By shipping only what Node.js needs, the image size is radically reduced to approximately ~45 MB compressed. +* **Hardened Security:** Removing the OS and shell results in zero known vulnerabilities and drastically shrinks the attack surface. +* **Production Ready Defaults:** The image is pre-configured with `NODE_ENV=production` and `TZ=UTC`, and includes essential routing like CA Certificates, `nsswitch.conf`, and IANA tzdata. +* **Multi-Platform Architecture:** Natively supports both `linux/amd64` and `linux/arm64` deployments. + +By enforcing a strict distroless guarantee, the [Runtime-Node repository](https://github.com/Runtimes-Node/Runtime-Node) and its corresponding **[Docker Hub image](https://hub.docker.com/r/runtimenode/runtime-node)** allow developers to ship code securely, knowing there are no unnecessary tools for attackers to exploit. \ No newline at end of file diff --git a/topics/runtime-node/runtime-node.png b/topics/runtime-node/runtime-node.png new file mode 100644 index 0000000000000000000000000000000000000000..660f435e029dabed786196c0a339b3d1a314fd8f GIT binary patch literal 48588 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 literal 0 HcmV?d00001 From f8b278f2f12454140a88ab794e1ee5f86da5b21a Mon Sep 17 00:00:00 2001 From: Amnoor Brar Date: Sun, 22 Mar 2026 13:32:38 +0800 Subject: [PATCH 2/5] bugfix: Update URL to use `url` field instead of deprecated `official_url`. --- topics/runtime-node/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/topics/runtime-node/index.md b/topics/runtime-node/index.md index c2935ef5618..3086b9d090d 100644 --- a/topics/runtime-node/index.md +++ b/topics/runtime-node/index.md @@ -5,7 +5,7 @@ topic: runtime-node aliases: node-runtime, distroless-node related: nodejs, docker, distroless, containers, security github_url: https://github.com/Runtimes-Node/Runtime-Node -official_url: https://hub.docker.com/r/runtimenode/runtime-node +url: https://hub.docker.com/r/runtimenode/runtime-node created_by: Runtimes-Node --- From cad9e28f5888ef593ae53d333064fe8e14293361 Mon Sep 17 00:00:00 2001 From: Amnoor Brar Date: Sun, 22 Mar 2026 13:42:08 +0800 Subject: [PATCH 3/5] bugfix: Add logo and update content for Runtime Node documentation --- topics/runtime-node/index.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/topics/runtime-node/index.md b/topics/runtime-node/index.md index 3086b9d090d..1ef97e97c54 100644 --- a/topics/runtime-node/index.md +++ b/topics/runtime-node/index.md @@ -6,18 +6,18 @@ aliases: node-runtime, distroless-node related: nodejs, docker, distroless, containers, security github_url: https://github.com/Runtimes-Node/Runtime-Node url: https://hub.docker.com/r/runtimenode/runtime-node +logo: runtime-node.png created_by: Runtimes-Node --- -**[Runtime Node](https://github.com/Runtimes-Node/Runtime-Node)** is an open-source, production-grade Docker base image tailored for executing [Node.js](https://github.com/topics/nodejs) applications with maximum security and minimal overhead. Managed under the **[Runtimes-Node](https://github.com/Runtimes-Node)** organization, it provides developers with a strictly distroless runtime environment for their containerized workloads. +**[Runtime Node](https://github.com/Runtimes-Node/Runtime-Node)** is an open source, production-grade Docker base image tailored for executing [Node.js](https://github.com/topics/nodejs) applications. Managed by **[Runtimes-Node](https://github.com/Runtimes-Node)**, it provides developers with a strictly distroless runtime environment. -Unlike traditional Node.js base images built on Debian or Alpine Linux, Runtime Node is assembled entirely `FROM scratch`. It completely eliminates the operating system layer, shells (like `bash` or `sh`), package managers (`apt` or `apk`), and all system utilities. It achieves this by extracting only the hand-picked binaries and shared libraries strictly required by the Node.js runtime. +Unlike traditional Node.js base images, Runtime Node is assembled `FROM scratch`. It completely eliminates the operating system layer, shells, package managers, and system utilities, retaining only the exact binaries required by Node.js. ### Key Characteristics +* **Zero-Bloat:** Radically reduced to ~45 MB compressed. +* **Hardened Security:** Zero known vulnerabilities and a minimal attack surface. +* **Production Ready:** Pre-configured with `NODE_ENV=production` and `TZ=UTC`. +* **Multi-Platform:** Supports `linux/amd64` and `linux/arm64`. -* **Zero-Bloat Footprint:** By shipping only what Node.js needs, the image size is radically reduced to approximately ~45 MB compressed. -* **Hardened Security:** Removing the OS and shell results in zero known vulnerabilities and drastically shrinks the attack surface. -* **Production Ready Defaults:** The image is pre-configured with `NODE_ENV=production` and `TZ=UTC`, and includes essential routing like CA Certificates, `nsswitch.conf`, and IANA tzdata. -* **Multi-Platform Architecture:** Natively supports both `linux/amd64` and `linux/arm64` deployments. - -By enforcing a strict distroless guarantee, the [Runtime-Node repository](https://github.com/Runtimes-Node/Runtime-Node) and its corresponding **[Docker Hub image](https://hub.docker.com/r/runtimenode/runtime-node)** allow developers to ship code securely, knowing there are no unnecessary tools for attackers to exploit. \ No newline at end of file +This distroless guarantee ensures code is shipped securely with no unnecessary tools to exploit. \ No newline at end of file From c13406cb89d7a5523efb728846b2b48a8a10b7d6 Mon Sep 17 00:00:00 2001 From: Amnoor Brar Date: Sun, 22 Mar 2026 14:15:40 +0800 Subject: [PATCH 4/5] doocs: Add additional aliases for clarity and searchability. --- topics/runtime-node/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/topics/runtime-node/index.md b/topics/runtime-node/index.md index 1ef97e97c54..a1a08014de5 100644 --- a/topics/runtime-node/index.md +++ b/topics/runtime-node/index.md @@ -2,7 +2,7 @@ display_name: Runtime Node short_description: A secure, distroless Node.js Docker base image built entirely FROM scratch. topic: runtime-node -aliases: node-runtime, distroless-node +aliases: runtime-node, node-runtime, distroless-node, scratch-node, secure-node, hardened-node related: nodejs, docker, distroless, containers, security github_url: https://github.com/Runtimes-Node/Runtime-Node url: https://hub.docker.com/r/runtimenode/runtime-node From 8a3d510d3d21548e7da6fc66c724ecc8eef527d8 Mon Sep 17 00:00:00 2001 From: Amnoor Brar Date: Sun, 22 Mar 2026 14:32:42 +0800 Subject: [PATCH 5/5] bugfix: Remove redundant alias. --- topics/runtime-node/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/topics/runtime-node/index.md b/topics/runtime-node/index.md index a1a08014de5..f6f400ed8ba 100644 --- a/topics/runtime-node/index.md +++ b/topics/runtime-node/index.md @@ -2,7 +2,7 @@ display_name: Runtime Node short_description: A secure, distroless Node.js Docker base image built entirely FROM scratch. topic: runtime-node -aliases: runtime-node, node-runtime, distroless-node, scratch-node, secure-node, hardened-node +aliases: node-runtime, distroless-node, scratch-node, secure-node, hardened-node related: nodejs, docker, distroless, containers, security github_url: https://github.com/Runtimes-Node/Runtime-Node url: https://hub.docker.com/r/runtimenode/runtime-node