From d6f8d77d15965732c747bc5c1ede0523b63de0f6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Milan=20Felix=20=C5=A0ulc?= Date: Sun, 27 Sep 2026 16:23:08 +0000 Subject: [PATCH 1/3] Docker: move PHP 8.3-8.5 and Node 24 to Alpine 3.24, add Node 26 PHP 8.5 leaves Alpine edge for the stable 3.24 branch. Node 24 uses the LTS nodejs package from Alpine 3.24 main. Node 26 is new and uses nodejs-current from Alpine 3.24. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01VSKw7jY45nUJWQxWpvjm82 --- .claude/commands/versions.md | 2 +- .github/workflows/docker.yml | 1 + .scripts/versions.sh | 2 +- Makefile | 1 + README.md | 12 +++++++----- node22/Dockerfile | 2 +- node24/Dockerfile | 8 ++++---- node26/Dockerfile | 14 ++++++++++++++ php83/Dockerfile | 4 ++-- php84/Dockerfile | 4 ++-- php85/Dockerfile | 4 ++-- 11 files changed, 36 insertions(+), 18 deletions(-) create mode 100644 node26/Dockerfile diff --git a/.claude/commands/versions.md b/.claude/commands/versions.md index 4584615..702027d 100644 --- a/.claude/commands/versions.md +++ b/.claude/commands/versions.md @@ -13,4 +13,4 @@ Steps: 6. For versions without data (N/A), keep them with dash placeholders (e.g., `NodeJS 14 | Alpine v3.12 | node14 | - | - | -`) 7. Show a summary of what was updated -Important: Only update versions 15-24 in the table, leave versions 10-14 as they are with dashes. +Important: Only update versions 15-26 in the table, leave versions 10-14 as they are with dashes. diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index 02d49de..3273609 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -58,6 +58,7 @@ jobs: - item: node22 - item: node23 - item: node24 + - item: node26 # PHP - item: php56 - item: php70 diff --git a/.scripts/versions.sh b/.scripts/versions.sh index c4932a4..2701708 100755 --- a/.scripts/versions.sh +++ b/.scripts/versions.sh @@ -27,7 +27,7 @@ while [[ $# -gt 0 ]]; do done # Array of node versions to check -NODE_VERSIONS=(15 16 17 18 19 20 21 22 23 24) +NODE_VERSIONS=(15 16 17 18 19 20 21 22 23 24 26) # Detect platform PLATFORM=$(uname -m) diff --git a/Makefile b/Makefile index 700e94c..5f2c34d 100644 --- a/Makefile +++ b/Makefile @@ -56,5 +56,6 @@ build-node21: _docker-build-node21 build-node22: _docker-build-node22 build-node23: _docker-build-node23 build-node24: _docker-build-node24 +build-node26: _docker-build-node26 build-ansitest: _docker-build-ansitest diff --git a/README.md b/README.md index a26536d..03b01d8 100644 --- a/README.md +++ b/README.md @@ -25,9 +25,9 @@ | PHP | OS | Tag | Dockerfile | |----------|--------------|--------|----------------------------------------------------------------------------| -| PHP 8.5 | Alpine edge | php85 | [Dockerfile](https://github.com/dockette/ci/blob/master/php85/Dockerfile) | -| PHP 8.4 | Alpine v3.22 | php84 | [Dockerfile](https://github.com/dockette/ci/blob/master/php84/Dockerfile) | -| PHP 8.3 | Alpine v3.22 | php83 | [Dockerfile](https://github.com/dockette/ci/blob/master/php83/Dockerfile) | +| PHP 8.5 | Alpine v3.24 | php85 | [Dockerfile](https://github.com/dockette/ci/blob/master/php85/Dockerfile) | +| PHP 8.4 | Alpine v3.24 | php84 | [Dockerfile](https://github.com/dockette/ci/blob/master/php84/Dockerfile) | +| PHP 8.3 | Alpine v3.24 | php83 | [Dockerfile](https://github.com/dockette/ci/blob/master/php83/Dockerfile) | | PHP 8.2 | Alpine v3.22 | php82 | [Dockerfile](https://github.com/dockette/ci/blob/master/php82/Dockerfile) | | PHP 8.1 | Alpine v3.19 | php81 | [Dockerfile](https://github.com/dockette/ci/blob/master/php81/Dockerfile) | | PHP 8.0 | Alpine v3.15 | php80 | [Dockerfile](https://github.com/dockette/ci/blob/master/php80/Dockerfile) | @@ -70,9 +70,10 @@ docker run -it --rm -v $(pwd):/srv dockette/ci:php56 | NodeJS | OS | Tag | Node Version | npm Version | pnpm Version | Dockerfile | |----------------------|--------------|--------|--------------|-------------|--------------|----------------------------------------------------------------------------| -| NodeJS 24 (v24.15.0) | Alpine v3.23 | node24 | v24.15.0 | 11.11.0 | 10.33.4 | [Dockerfile](https://github.com/dockette/ci/blob/master/node24/Dockerfile) | +| NodeJS 26 (v26.5.1) | Alpine v3.24 | node26 | v26.5.1 | 11.12.1 | 11.20.0 | [Dockerfile](https://github.com/dockette/ci/blob/master/node26/Dockerfile) | +| NodeJS 24 (v24.18.1) | Alpine v3.24 | node24 | v24.18.1 | 11.12.1 | 11.20.0 | [Dockerfile](https://github.com/dockette/ci/blob/master/node24/Dockerfile) | | NodeJS 23 (v23.11.1) | Alpine v3.22 | node23 | v23.11.1 | 11.4.2 | 10.9.0 | [Dockerfile](https://github.com/dockette/ci/blob/master/node23/Dockerfile) | -| NodeJS 22 (v22.15.1) | Alpine v3.21 | node22 | v22.15.1 | 10.9.1 | 9.15.9 | [Dockerfile](https://github.com/dockette/ci/blob/master/node22/Dockerfile) | +| NodeJS 22 (v22.23.2) | Alpine v3.21 | node22 | v22.23.2 | 10.9.1 | 9.15.9 | [Dockerfile](https://github.com/dockette/ci/blob/master/node22/Dockerfile) | | NodeJS 21 (v21.7.3) | Alpine v3.20 | node21 | v21.7.3 | 10.9.1 | 10.22.0 | [Dockerfile](https://github.com/dockette/ci/blob/master/node21/Dockerfile) | | NodeJS 20 (v20.8.1) | Alpine v3.18 | node20 | v20.8.1 | 9.6.6 | 10.22.0 | [Dockerfile](https://github.com/dockette/ci/blob/master/node20/Dockerfile) | | NodeJS 19 (v19.7.0) | Alpine v3.17 | node19 | v19.7.0 | 9.1.2 | 10.22.0 | [Dockerfile](https://github.com/dockette/ci/blob/master/node19/Dockerfile) | @@ -106,6 +107,7 @@ All Nodejs images have a few preinstalled packages: **Terminal** ``` +docker run -it --rm -v $(pwd):/srv dockette/ci:node26 docker run -it --rm -v $(pwd):/srv dockette/ci:node24 docker run -it --rm -v $(pwd):/srv dockette/ci:node23 docker run -it --rm -v $(pwd):/srv dockette/ci:node22 diff --git a/node22/Dockerfile b/node22/Dockerfile index 49e2c03..feae7bc 100644 --- a/node22/Dockerfile +++ b/node22/Dockerfile @@ -1,6 +1,6 @@ FROM dockette/alpine:3.21 -ENV NODEJS_VERSION=22.15.1 +ENV NODEJS_VERSION=22.23.2 RUN echo '@community http://dl-cdn.alpinelinux.org/alpine/v3.21/community' >> /etc/apk/repositories && \ apk update && apk upgrade && \ diff --git a/node24/Dockerfile b/node24/Dockerfile index aa4f4d8..3ff7916 100644 --- a/node24/Dockerfile +++ b/node24/Dockerfile @@ -1,13 +1,13 @@ -FROM dockette/alpine:3.23 +FROM dockette/alpine:3.24 -ENV NODEJS_VERSION=24.15.0 +ENV NODEJS_VERSION=24.18.1 -RUN echo '@community http://dl-cdn.alpinelinux.org/alpine/v3.23/community' >> /etc/apk/repositories && \ +RUN echo '@community http://dl-cdn.alpinelinux.org/alpine/v3.24/community' >> /etc/apk/repositories && \ apk update && apk upgrade && \ # DEPENDENCIES ############################################################# apk add --update bash git ca-certificates curl openssh tzdata make direnv && \ # NODEJS ################################################################### - apk add --update nodejs-current@community npm@community pnpm@community && \ + apk add --update nodejs npm@community pnpm@community && \ # CLEAN UP ################################################################# rm -rf /var/cache/apk/* diff --git a/node26/Dockerfile b/node26/Dockerfile new file mode 100644 index 0000000..8ff9e15 --- /dev/null +++ b/node26/Dockerfile @@ -0,0 +1,14 @@ +FROM dockette/alpine:3.24 + +ENV NODEJS_VERSION=26.5.1 + +RUN echo '@community http://dl-cdn.alpinelinux.org/alpine/v3.24/community' >> /etc/apk/repositories && \ + apk update && apk upgrade && \ + # DEPENDENCIES ############################################################# + apk add --update bash git ca-certificates curl openssh tzdata make direnv && \ + # NODEJS ################################################################### + apk add --update nodejs-current@community npm@community pnpm@community && \ + # CLEAN UP ################################################################# + rm -rf /var/cache/apk/* + +CMD ["node"] diff --git a/php83/Dockerfile b/php83/Dockerfile index bd9d522..4e375df 100644 --- a/php83/Dockerfile +++ b/php83/Dockerfile @@ -1,4 +1,4 @@ -FROM dockette/alpine:3.22 +FROM dockette/alpine:3.24 LABEL maintainer="Milan Sulc " @@ -13,7 +13,7 @@ ENV COMPOSER_BIN=$COMPOSER_DIR/composer ENV TZ=Europe/Prague ENV LD_PRELOAD="/usr/lib/preloadable_libiconv.so php" -RUN echo '@community http://dl-cdn.alpinelinux.org/alpine/v3.22/community/' >> /etc/apk/repositories && \ +RUN echo '@community http://dl-cdn.alpinelinux.org/alpine/v3.24/community/' >> /etc/apk/repositories && \ # DEPENDENCIES ############################################################# apk update && \ apk upgrade && \ diff --git a/php84/Dockerfile b/php84/Dockerfile index 080e37f..6396fe4 100644 --- a/php84/Dockerfile +++ b/php84/Dockerfile @@ -1,4 +1,4 @@ -FROM dockette/alpine:3.22 +FROM dockette/alpine:3.24 LABEL maintainer="Milan Sulc " @@ -13,7 +13,7 @@ ENV COMPOSER_BIN=$COMPOSER_DIR/composer ENV TZ=Europe/Prague ENV LD_PRELOAD="/usr/lib/preloadable_libiconv.so php" -RUN echo '@community http://dl-cdn.alpinelinux.org/alpine/v3.22/community/' >> /etc/apk/repositories && \ +RUN echo '@community http://dl-cdn.alpinelinux.org/alpine/v3.24/community/' >> /etc/apk/repositories && \ # DEPENDENCIES ############################################################# apk update && \ apk upgrade && \ diff --git a/php85/Dockerfile b/php85/Dockerfile index ef7ae68..d6d8532 100644 --- a/php85/Dockerfile +++ b/php85/Dockerfile @@ -1,4 +1,4 @@ -FROM dockette/alpine:edge +FROM dockette/alpine:3.24 LABEL maintainer="Milan Sulc " @@ -13,7 +13,7 @@ ENV COMPOSER_BIN=$COMPOSER_DIR/composer ENV TZ=Europe/Prague ENV LD_PRELOAD="/usr/lib/preloadable_libiconv.so php" -RUN echo '@community http://dl-cdn.alpinelinux.org/alpine/edge/community/' >> /etc/apk/repositories && \ +RUN echo '@community http://dl-cdn.alpinelinux.org/alpine/v3.24/community/' >> /etc/apk/repositories && \ # DEPENDENCIES ############################################################# apk update && \ apk upgrade && \ From bdc67ce62865471a0013d84584301963c301c7c2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Milan=20Felix=20=C5=A0ulc?= Date: Tue, 29 Sep 2026 16:55:56 +0000 Subject: [PATCH 2/3] Docker: move ansitest to Debian 12 bookworm Debian 11 bullseye is EOL. Its security packages are gone from deb.debian.org, so apt install fails with 404. Bookworm still ships vagrant. Docker repo uses a signed-by keyring, Ansible comes from Debian instead of the old trusty PPA, and pip3 uses --break-system-packages (PEP 668). Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01VSKw7jY45nUJWQxWpvjm82 --- README.md | 2 +- ansitest/Dockerfile | 12 +++++------- 2 files changed, 6 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index 03b01d8..7d11349 100644 --- a/README.md +++ b/README.md @@ -133,7 +133,7 @@ docker run -it --rm -v $(pwd):/srv dockette/ci:node6 | Tools | OS | Tag | Dockerfile | |--------------------------------|--------------|---------------|----------------------------------------------------------------------------| -| Ansible, Vagrant, Docker | Debian 11 | ansitest | [Dockerfile](https://github.com/dockette/ci/blob/master/ansitest/Dockerfile) | +| Ansible, Vagrant, Docker | Debian 12 | ansitest | [Dockerfile](https://github.com/dockette/ci/blob/master/ansitest/Dockerfile) | ----- diff --git a/ansitest/Dockerfile b/ansitest/Dockerfile index b069ecb..8943bfc 100644 --- a/ansitest/Dockerfile +++ b/ansitest/Dockerfile @@ -1,4 +1,4 @@ -FROM debian:bullseye-slim +FROM debian:bookworm-slim ARG TARGETARCH @@ -20,16 +20,14 @@ RUN apt update && \ vagrant \ wget && \ # DOCKER ################################################################### - curl -fsSL https://download.docker.com/linux/debian/gpg | apt-key add - && \ - add-apt-repository "deb [arch=${TARGETARCH}] https://download.docker.com/linux/debian bullseye stable" && \ + install -m 0755 -d /etc/apt/keyrings && \ + curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc && \ + echo "deb [arch=${TARGETARCH} signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian bookworm stable" > /etc/apt/sources.list.d/docker.list && \ apt update && \ apt install --no-install-recommends -y docker-ce docker-ce-cli containerd.io && \ # ANSIBLE ################################################################## - echo "deb http://ppa.launchpad.net/ansible/ansible/ubuntu trusty main" >> /etc/apt/sources.list.d/ansible.list && \ - apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 93C4A3FD7BB9C367 && \ - apt update && \ apt install -y ansible && \ - pip3 install ansible-lint yamllint molecule molecule-plugins[docker] && \ + pip3 install --break-system-packages ansible-lint yamllint molecule molecule-plugins[docker] && \ ansible-galaxy collection install --collections-path /usr/lib/python3/dist-packages/ansible_collections -U \ ansible.utils \ ansible.posix \ From 2f42eee55632884251ed29b962b7a64863d3bcee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Milan=20Felix=20=C5=A0ulc?= Date: Tue, 29 Sep 2026 17:02:46 +0000 Subject: [PATCH 3/3] Docker: force php symlink on Alpine 3.24 On Alpine 3.24 php85 is the default PHP and ships /usr/bin/php, so "ln -s" fails in php85. php83 had no symlink and composer failed with "php: not found". Use "ln -sf" in php83, php84 and php85. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01VSKw7jY45nUJWQxWpvjm82 --- php83/Dockerfile | 1 + php84/Dockerfile | 2 +- php85/Dockerfile | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/php83/Dockerfile b/php83/Dockerfile index 4e375df..2521a3b 100644 --- a/php83/Dockerfile +++ b/php83/Dockerfile @@ -82,6 +82,7 @@ RUN echo '@community http://dl-cdn.alpinelinux.org/alpine/v3.24/community/' >> / sed -i -- 's/zend/;zend/g' /etc/php83/conf.d/50_xdebug.ini && \ echo "php -dzend_extension=xdebug.so \$@" >> $PHPXD_BIN && \ chmod +x $PHPXD_BIN && \ + ln -sf $PHP8_BIN $PHP_BIN && \ # COMPOSER ################################################################# curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer --2 && \ # CLEAN UP ################################################################# diff --git a/php84/Dockerfile b/php84/Dockerfile index 6396fe4..ae6d602 100644 --- a/php84/Dockerfile +++ b/php84/Dockerfile @@ -82,7 +82,7 @@ RUN echo '@community http://dl-cdn.alpinelinux.org/alpine/v3.24/community/' >> / sed -i -- 's/zend/;zend/g' /etc/php84/conf.d/50_xdebug.ini && \ echo "php -dzend_extension=xdebug.so \$@" >> $PHPXD_BIN && \ chmod +x $PHPXD_BIN && \ - ln -s $PHP8_BIN $PHP_BIN && \ + ln -sf $PHP8_BIN $PHP_BIN && \ # COMPOSER ################################################################# curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer --2 && \ # CLEAN UP ################################################################# diff --git a/php85/Dockerfile b/php85/Dockerfile index d6d8532..9cf8cea 100644 --- a/php85/Dockerfile +++ b/php85/Dockerfile @@ -82,7 +82,7 @@ RUN echo '@community http://dl-cdn.alpinelinux.org/alpine/v3.24/community/' >> / sed -i -- 's/zend/;zend/g' /etc/php85/conf.d/50_xdebug.ini && \ echo "php -dzend_extension=xdebug.so \$@" >> $PHPXD_BIN && \ chmod +x $PHPXD_BIN && \ - ln -s $PHP8_BIN $PHP_BIN && \ + ln -sf $PHP8_BIN $PHP_BIN && \ # COMPOSER ################################################################# curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer --2 && \ # CLEAN UP #################################################################