From 3fadbe29c3a08128cdd6ffaef0063058f976412a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tim=20Pr=C3=BCssing?= Date: Fri, 18 Sep 2026 16:54:32 +0200 Subject: [PATCH 1/2] feat: add support for Node.js 26 (Lithium) --- .github/workflows/buildx.yml | 2 +- .github/workflows/dockerimage.yml | 2 +- 3.2/26/Dockerfile | 19 +++++++++++++++++++ 3.2/26/alpine/Dockerfile | 11 +++++++++++ 3.2/26/slim/Dockerfile | 25 +++++++++++++++++++++++++ 3.3/26/Dockerfile | 19 +++++++++++++++++++ 3.3/26/alpine/Dockerfile | 11 +++++++++++ 3.3/26/slim/Dockerfile | 25 +++++++++++++++++++++++++ 3.4/26/Dockerfile | 19 +++++++++++++++++++ 3.4/26/alpine/Dockerfile | 11 +++++++++++ 3.4/26/slim/Dockerfile | 25 +++++++++++++++++++++++++ 4.0/26/Dockerfile | 19 +++++++++++++++++++ 4.0/26/alpine/Dockerfile | 11 +++++++++++ 4.0/26/slim/Dockerfile | 25 +++++++++++++++++++++++++ README.md | 6 +++--- 15 files changed, 225 insertions(+), 5 deletions(-) create mode 100644 3.2/26/Dockerfile create mode 100644 3.2/26/alpine/Dockerfile create mode 100644 3.2/26/slim/Dockerfile create mode 100644 3.3/26/Dockerfile create mode 100644 3.3/26/alpine/Dockerfile create mode 100644 3.3/26/slim/Dockerfile create mode 100644 3.4/26/Dockerfile create mode 100644 3.4/26/alpine/Dockerfile create mode 100644 3.4/26/slim/Dockerfile create mode 100644 4.0/26/Dockerfile create mode 100644 4.0/26/alpine/Dockerfile create mode 100644 4.0/26/slim/Dockerfile diff --git a/.github/workflows/buildx.yml b/.github/workflows/buildx.yml index 396e682..b12f917 100644 --- a/.github/workflows/buildx.yml +++ b/.github/workflows/buildx.yml @@ -15,7 +15,7 @@ jobs: fail-fast: false matrix: ruby-version: ["3.2", "3.3", "3.4", "4.0"] - node-version: [22, 24] + node-version: [22, 24, 26] variant: [default, slim, alpine] include: - variant: default diff --git a/.github/workflows/dockerimage.yml b/.github/workflows/dockerimage.yml index d3bfaa5..feb68f0 100644 --- a/.github/workflows/dockerimage.yml +++ b/.github/workflows/dockerimage.yml @@ -14,7 +14,7 @@ jobs: fail-fast: false matrix: ruby-version: ["3.2", "3.3", "3.4", "4.0"] - node-version: [22, 24] + node-version: [22, 24, 26] variant: [default, slim, alpine] steps: diff --git a/3.2/26/Dockerfile b/3.2/26/Dockerfile new file mode 100644 index 0000000..b61bb2c --- /dev/null +++ b/3.2/26/Dockerfile @@ -0,0 +1,19 @@ +FROM ruby:3.2 +LABEL maintainer="Tim Prüssing " + +ARG REFRESHED_AT +ENV REFRESHED_AT=$REFRESHED_AT +ARG NODE_MAJOR=26 + +SHELL ["/bin/bash", "-o", "pipefail", "-c"] + +RUN printf 'Package: nodejs\nPin: origin deb.nodesource.com\nPin-Priority: 1001' > /etc/apt/preferences.d/nodesource \ + && mkdir -p /etc/apt/keyrings \ + && curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg \ + && echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_$NODE_MAJOR.x nodistro main" | tee /etc/apt/sources.list.d/nodesource.list \ + && apt-get update -qq && apt-get install -qq --no-install-recommends \ + nodejs \ + && apt-get upgrade -qq \ + && apt-get clean \ + && rm -rf /var/lib/apt/lists/*\ + && npm install -g yarn@1 diff --git a/3.2/26/alpine/Dockerfile b/3.2/26/alpine/Dockerfile new file mode 100644 index 0000000..8716437 --- /dev/null +++ b/3.2/26/alpine/Dockerfile @@ -0,0 +1,11 @@ +FROM ruby:3.2-alpine +LABEL maintainer="Tim Prüssing " + +ARG REFRESHED_AT +ENV REFRESHED_AT=$REFRESHED_AT + +RUN apk -U upgrade \ + && apk add --no-cache \ + nodejs-current \ + npm \ + yarn diff --git a/3.2/26/slim/Dockerfile b/3.2/26/slim/Dockerfile new file mode 100644 index 0000000..ad61f9d --- /dev/null +++ b/3.2/26/slim/Dockerfile @@ -0,0 +1,25 @@ +FROM ruby:3.2-slim +LABEL maintainer="Tim Prüssing " + +ARG REFRESHED_AT +ENV REFRESHED_AT=$REFRESHED_AT +ARG NODE_MAJOR=26 + +# hadolint ignore=DL3009 +RUN apt-get update -qq && apt-get install -qq --no-install-recommends \ + curl \ + gnupg2 \ + libatomic1 + +SHELL ["/bin/bash", "-o", "pipefail", "-c"] + +RUN printf 'Package: nodejs\nPin: origin deb.nodesource.com\nPin-Priority: 1001' > /etc/apt/preferences.d/nodesource \ + && mkdir -p /etc/apt/keyrings \ + && curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg \ + && echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_$NODE_MAJOR.x nodistro main" | tee /etc/apt/sources.list.d/nodesource.list \ + && apt-get update -qq && apt-get install -qq --no-install-recommends \ + nodejs \ + && apt-get upgrade -qq \ + && apt-get clean \ + && rm -rf /var/lib/apt/lists/*\ + && npm install -g yarn@1 diff --git a/3.3/26/Dockerfile b/3.3/26/Dockerfile new file mode 100644 index 0000000..89c024f --- /dev/null +++ b/3.3/26/Dockerfile @@ -0,0 +1,19 @@ +FROM ruby:3.3 +LABEL maintainer="Tim Prüssing " + +ARG REFRESHED_AT +ENV REFRESHED_AT=$REFRESHED_AT +ARG NODE_MAJOR=26 + +SHELL ["/bin/bash", "-o", "pipefail", "-c"] + +RUN printf 'Package: nodejs\nPin: origin deb.nodesource.com\nPin-Priority: 1001' > /etc/apt/preferences.d/nodesource \ + && mkdir -p /etc/apt/keyrings \ + && curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg \ + && echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_$NODE_MAJOR.x nodistro main" | tee /etc/apt/sources.list.d/nodesource.list \ + && apt-get update -qq && apt-get install -qq --no-install-recommends \ + nodejs \ + && apt-get upgrade -qq \ + && apt-get clean \ + && rm -rf /var/lib/apt/lists/*\ + && npm install -g yarn@1 diff --git a/3.3/26/alpine/Dockerfile b/3.3/26/alpine/Dockerfile new file mode 100644 index 0000000..0565306 --- /dev/null +++ b/3.3/26/alpine/Dockerfile @@ -0,0 +1,11 @@ +FROM ruby:3.3-alpine +LABEL maintainer="Tim Prüssing " + +ARG REFRESHED_AT +ENV REFRESHED_AT=$REFRESHED_AT + +RUN apk -U upgrade \ + && apk add --no-cache \ + nodejs-current \ + npm \ + yarn diff --git a/3.3/26/slim/Dockerfile b/3.3/26/slim/Dockerfile new file mode 100644 index 0000000..c48a47e --- /dev/null +++ b/3.3/26/slim/Dockerfile @@ -0,0 +1,25 @@ +FROM ruby:3.3-slim +LABEL maintainer="Tim Prüssing " + +ARG REFRESHED_AT +ENV REFRESHED_AT=$REFRESHED_AT +ARG NODE_MAJOR=26 + +# hadolint ignore=DL3009 +RUN apt-get update -qq && apt-get install -qq --no-install-recommends \ + curl \ + gnupg2 \ + libatomic1 + +SHELL ["/bin/bash", "-o", "pipefail", "-c"] + +RUN printf 'Package: nodejs\nPin: origin deb.nodesource.com\nPin-Priority: 1001' > /etc/apt/preferences.d/nodesource \ + && mkdir -p /etc/apt/keyrings \ + && curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg \ + && echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_$NODE_MAJOR.x nodistro main" | tee /etc/apt/sources.list.d/nodesource.list \ + && apt-get update -qq && apt-get install -qq --no-install-recommends \ + nodejs \ + && apt-get upgrade -qq \ + && apt-get clean \ + && rm -rf /var/lib/apt/lists/*\ + && npm install -g yarn@1 diff --git a/3.4/26/Dockerfile b/3.4/26/Dockerfile new file mode 100644 index 0000000..94d8aa2 --- /dev/null +++ b/3.4/26/Dockerfile @@ -0,0 +1,19 @@ +FROM ruby:3.4 +LABEL maintainer="Tim Prüssing " + +ARG REFRESHED_AT +ENV REFRESHED_AT=$REFRESHED_AT +ARG NODE_MAJOR=26 + +SHELL ["/bin/bash", "-o", "pipefail", "-c"] + +RUN printf 'Package: nodejs\nPin: origin deb.nodesource.com\nPin-Priority: 1001' > /etc/apt/preferences.d/nodesource \ + && mkdir -p /etc/apt/keyrings \ + && curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg \ + && echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_$NODE_MAJOR.x nodistro main" | tee /etc/apt/sources.list.d/nodesource.list \ + && apt-get update -qq && apt-get install -qq --no-install-recommends \ + nodejs \ + && apt-get upgrade -qq \ + && apt-get clean \ + && rm -rf /var/lib/apt/lists/*\ + && npm install -g yarn@1 diff --git a/3.4/26/alpine/Dockerfile b/3.4/26/alpine/Dockerfile new file mode 100644 index 0000000..d5d4d29 --- /dev/null +++ b/3.4/26/alpine/Dockerfile @@ -0,0 +1,11 @@ +FROM ruby:3.4-alpine +LABEL maintainer="Tim Prüssing " + +ARG REFRESHED_AT +ENV REFRESHED_AT=$REFRESHED_AT + +RUN apk -U upgrade \ + && apk add --no-cache \ + nodejs-current \ + npm \ + yarn diff --git a/3.4/26/slim/Dockerfile b/3.4/26/slim/Dockerfile new file mode 100644 index 0000000..20bb092 --- /dev/null +++ b/3.4/26/slim/Dockerfile @@ -0,0 +1,25 @@ +FROM ruby:3.4-slim +LABEL maintainer="Tim Prüssing " + +ARG REFRESHED_AT +ENV REFRESHED_AT=$REFRESHED_AT +ARG NODE_MAJOR=26 + +# hadolint ignore=DL3009 +RUN apt-get update -qq && apt-get install -qq --no-install-recommends \ + curl \ + gnupg2 \ + libatomic1 + +SHELL ["/bin/bash", "-o", "pipefail", "-c"] + +RUN printf 'Package: nodejs\nPin: origin deb.nodesource.com\nPin-Priority: 1001' > /etc/apt/preferences.d/nodesource \ + && mkdir -p /etc/apt/keyrings \ + && curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg \ + && echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_$NODE_MAJOR.x nodistro main" | tee /etc/apt/sources.list.d/nodesource.list \ + && apt-get update -qq && apt-get install -qq --no-install-recommends \ + nodejs \ + && apt-get upgrade -qq \ + && apt-get clean \ + && rm -rf /var/lib/apt/lists/*\ + && npm install -g yarn@1 diff --git a/4.0/26/Dockerfile b/4.0/26/Dockerfile new file mode 100644 index 0000000..eff89c5 --- /dev/null +++ b/4.0/26/Dockerfile @@ -0,0 +1,19 @@ +FROM ruby:4.0 +LABEL maintainer="Tim Prüssing " + +ARG REFRESHED_AT +ENV REFRESHED_AT=$REFRESHED_AT +ARG NODE_MAJOR=26 + +SHELL ["/bin/bash", "-o", "pipefail", "-c"] + +RUN printf 'Package: nodejs\nPin: origin deb.nodesource.com\nPin-Priority: 1001' > /etc/apt/preferences.d/nodesource \ + && mkdir -p /etc/apt/keyrings \ + && curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg \ + && echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_$NODE_MAJOR.x nodistro main" | tee /etc/apt/sources.list.d/nodesource.list \ + && apt-get update -qq && apt-get install -qq --no-install-recommends \ + nodejs \ + && apt-get upgrade -qq \ + && apt-get clean \ + && rm -rf /var/lib/apt/lists/*\ + && npm install -g yarn@1 diff --git a/4.0/26/alpine/Dockerfile b/4.0/26/alpine/Dockerfile new file mode 100644 index 0000000..ae696c4 --- /dev/null +++ b/4.0/26/alpine/Dockerfile @@ -0,0 +1,11 @@ +FROM ruby:4.0-alpine +LABEL maintainer="Tim Prüssing " + +ARG REFRESHED_AT +ENV REFRESHED_AT=$REFRESHED_AT + +RUN apk -U upgrade \ + && apk add --no-cache \ + nodejs-current \ + npm \ + yarn diff --git a/4.0/26/slim/Dockerfile b/4.0/26/slim/Dockerfile new file mode 100644 index 0000000..e76bd05 --- /dev/null +++ b/4.0/26/slim/Dockerfile @@ -0,0 +1,25 @@ +FROM ruby:4.0 +LABEL maintainer="Tim Prüssing " + +ARG REFRESHED_AT +ENV REFRESHED_AT=$REFRESHED_AT +ARG NODE_MAJOR=26 + +# hadolint ignore=DL3009 +RUN apt-get update -qq && apt-get install -qq --no-install-recommends \ + curl \ + gnupg2 \ + libatomic1 + +SHELL ["/bin/bash", "-o", "pipefail", "-c"] + +RUN printf 'Package: nodejs\nPin: origin deb.nodesource.com\nPin-Priority: 1001' > /etc/apt/preferences.d/nodesource \ + && mkdir -p /etc/apt/keyrings \ + && curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg \ + && echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_$NODE_MAJOR.x nodistro main" | tee /etc/apt/sources.list.d/nodesource.list \ + && apt-get update -qq && apt-get install -qq --no-install-recommends \ + nodejs \ + && apt-get upgrade -qq \ + && apt-get clean \ + && rm -rf /var/lib/apt/lists/*\ + && npm install -g yarn@1 diff --git a/README.md b/README.md index 92a5421..d8b9240 100644 --- a/README.md +++ b/README.md @@ -1,15 +1,15 @@ -# Ruby 3.2, 3.3, 3.4, 4.0 with Node.js 22 LTS or Node.js 24 LTS Dockerfile +# Ruby 3.2, 3.3, 3.4, 4.0 with Node.js 22 LTS, Node.js 24 LTS or Node.js 26 Dockerfile [![Docker Automated build](https://img.shields.io/docker/automated/timbru31/ruby-node.svg)](https://hub.docker.com/r/timbru31/ruby-node/) [![buildx Status](https://github.com/timbru31/docker-ruby-node/workflows/buildx/badge.svg)](https://github.com/timbru31/docker-ruby-node/actions?query=workflow%3Abuildx) [![Lint Dockerfiles](https://github.com/timbru31/docker-ruby-node/workflows/Lint%20Dockerfiles/badge.svg)](https://github.com/timbru31/docker-ruby-node/actions?query=workflow%3A%22Lint+Dockerfiles%22) -A minimal Dockerfile based on Ruby (3.2, 3.3, 3.4 or 4.0) Dockerfile (regular, slim or alpine) with Node.js 22 LTS (Jod) or Node.js 24 LTS (Krypton) installed. +A minimal Dockerfile based on Ruby (3.2, 3.3, 3.4 or 4.0) Dockerfile (regular, slim or alpine) with Node.js 22 LTS (Jod), Node.js 24 LTS (Krypton) or Node.js 26 (Lithium) installed. ## What's included - Ruby 3.2, 3.3, 3.4, 4.0 -- Node.js 22 LTS (Jod) or Node.js 24 LTS (Krypton) +- Node.js 22 LTS (Jod), Node.js 24 LTS (Krypton) or Node.js 26 (Lithium) - bundled npm that comes with the respective Node.js version (latest for Node.js LTS on alpine, see [why](https://gitlab.alpinelinux.org/alpine/aports/-/commit/25b10bd1a93e12a7e49fee38b0a229281ae49fb7)) - yarn From 3bb0cd8d75c15588ff36692778e78b193ec17395 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tim=20Pr=C3=BCssing?= Date: Fri, 18 Sep 2026 17:05:23 +0200 Subject: [PATCH 2/2] fix: install from v3.24 for ruby 3.2 --- 3.2/26/alpine/Dockerfile | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/3.2/26/alpine/Dockerfile b/3.2/26/alpine/Dockerfile index 8716437..f908220 100644 --- a/3.2/26/alpine/Dockerfile +++ b/3.2/26/alpine/Dockerfile @@ -4,8 +4,10 @@ LABEL maintainer="Tim Prüssing " ARG REFRESHED_AT ENV REFRESHED_AT=$REFRESHED_AT -RUN apk -U upgrade \ +RUN echo @3.24 https://dl-cdn.alpinelinux.org/alpine/v3.24/community >> /etc/apk/repositories \ + && echo @3.24 https://dl-cdn.alpinelinux.org/alpine/v3.24/main >> /etc/apk/repositories \ + && apk -U upgrade \ && apk add --no-cache \ - nodejs-current \ - npm \ - yarn + nodejs-current@3.24 \ + npm@3.24 \ + yarn@3.24