From 1d40374b43bf6fde63941e16772d78f1fb963b96 Mon Sep 17 00:00:00 2001 From: Juergen Kunz Date: Sat, 7 Feb 2026 12:57:35 +0000 Subject: [PATCH] feat(dockerfiles): Add base Dockerfiles for dbase/dind, enable pnpm and stack-fix, update preinstalled image tooling and registries, and bump @git.zone/tsdocker devDependency --- Dockerfile_dbase | 63 +++++++++++++++++++ Dockerfile_dbase_dind | 61 ++++++++++++++++++ Dockerfile_dbase_npmci | 3 + ...erfile_fossglobal_preinstalled_##version## | 13 ++-- changelog.md | 10 +++ npmextra.json | 13 +--- package.json | 2 +- pnpm-lock.yaml | 10 +-- 8 files changed, 150 insertions(+), 25 deletions(-) create mode 100644 Dockerfile_dbase create mode 100644 Dockerfile_dbase_dind create mode 100644 Dockerfile_dbase_npmci diff --git a/Dockerfile_dbase b/Dockerfile_dbase new file mode 100644 index 0000000..c975d82 --- /dev/null +++ b/Dockerfile_dbase @@ -0,0 +1,63 @@ +FROM docker:latest +LABEL author="Task Venture Capital GmbH " + +WORKDIR /workspace + +# Important environment variables +ENV NODE_VERSION_LTS="24.13.0" \ + NVM_DIR="/usr/local/nvm" \ + PNPM_HOME="/root/.local/share/pnpm" \ + NVM_NODEJS_ORG_MIRROR="https://unofficial-builds.nodejs.org/download/release" + +# System packages (single layer) +# docker:latest already includes docker-cli and docker-compose plugin +RUN apk add --no-cache \ + bash curl git openssl ca-certificates wget unzip \ + build-base python3 python3-dev py3-pip linux-headers \ + libgcc libstdc++ libc6-compat gnupg \ + libffi-dev openssl-dev libc-dev \ + iputils bind-tools \ + tini + +# Install NVM +RUN mkdir -p $NVM_DIR && curl -fsSL https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | bash + +# Make nvm available globally in all bash shells +RUN printf '%s\n%s\n%s\n' \ + 'export NVM_DIR="/usr/local/nvm"' \ + '[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh"' \ + '[ -s "$NVM_DIR/bash_completion" ] && . "$NVM_DIR/bash_completion"' \ + > /etc/bash.bashrc + +# Copy nvm wrapper scripts +COPY image_support_files/bash-with-nvm /usr/local/bin/bash-with-nvm +COPY image_support_files/docker-entrypoint.sh /usr/local/bin/docker-entrypoint.sh +RUN chmod +x /usr/local/bin/bash-with-nvm /usr/local/bin/docker-entrypoint.sh + +# Use wrapper for RUN commands to enable nvm +SHELL ["/usr/local/bin/bash-with-nvm"] + +# Enable nvm for runtime bash commands +ENV BASH_ENV=/etc/bash.bashrc + +# Prepare pnpm directory +RUN mkdir -p ${PNPM_HOME} +ENV PATH="$PNPM_HOME:$PATH" + +# Install Node.js LTS via NVM and pnpm +# TARGETARCH fix: override nvm_get_arch for correct musl arch on arm64 +ARG TARGETARCH +RUN NVM_MUSL_ARCH=$([ "$TARGETARCH" = "arm64" ] && echo "arm64-musl" || echo "x64-musl") \ + && nvm_get_arch() { echo "$NVM_MUSL_ARCH"; } \ + && nvm install $NODE_VERSION_LTS \ + && nvm alias default $NODE_VERSION_LTS \ + && nvm use default \ + && npm install -g pnpm \ + && pnpm -v \ + && pnpm config set unsafe-perm true + +ENV NODE_PATH=$NVM_DIR/versions/node/v$NODE_VERSION_LTS/lib/node_modules +ENV PATH=$NVM_DIR/versions/node/v$NODE_VERSION_LTS/bin:$PATH + +ENTRYPOINT ["/sbin/tini", "--", "/usr/local/bin/docker-entrypoint.sh"] +CMD ["bash"] diff --git a/Dockerfile_dbase_dind b/Dockerfile_dbase_dind new file mode 100644 index 0000000..72d2d0d --- /dev/null +++ b/Dockerfile_dbase_dind @@ -0,0 +1,61 @@ +FROM docker:dind +LABEL author="Task Venture Capital GmbH " + +WORKDIR /workspace + +# Important environment variables +ENV NODE_VERSION_LTS="24.13.0" \ + NVM_DIR="/usr/local/nvm" \ + PNPM_HOME="/root/.local/share/pnpm" \ + NVM_NODEJS_ORG_MIRROR="https://unofficial-builds.nodejs.org/download/release" + +# System packages +RUN apk add --no-cache \ + bash curl git openssl ca-certificates wget unzip \ + build-base python3 python3-dev py3-pip linux-headers \ + libgcc libstdc++ libc6-compat gnupg \ + libffi-dev openssl-dev libc-dev \ + iputils bind-tools \ + tini + +# Install NVM +RUN mkdir -p $NVM_DIR && curl -fsSL https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | bash + +# Make nvm available globally in all bash shells +RUN printf '%s\n%s\n%s\n' \ + 'export NVM_DIR="/usr/local/nvm"' \ + '[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh"' \ + '[ -s "$NVM_DIR/bash_completion" ] && . "$NVM_DIR/bash_completion"' \ + > /etc/bash.bashrc + +# Copy nvm wrapper for build-time SHELL +COPY image_support_files/bash-with-nvm /usr/local/bin/bash-with-nvm +RUN chmod +x /usr/local/bin/bash-with-nvm + +# Use wrapper for RUN commands to enable nvm +SHELL ["/usr/local/bin/bash-with-nvm"] + +# Enable nvm for runtime bash commands (docker exec shells) +ENV BASH_ENV=/etc/bash.bashrc + +# Prepare pnpm directory +RUN mkdir -p ${PNPM_HOME} +ENV PATH="$PNPM_HOME:$PATH" + +# Install Node.js LTS via NVM and pnpm +# TARGETARCH fix: override nvm_get_arch for correct musl arch on arm64 +ARG TARGETARCH +RUN NVM_MUSL_ARCH=$([ "$TARGETARCH" = "arm64" ] && echo "arm64-musl" || echo "x64-musl") \ + && nvm_get_arch() { echo "$NVM_MUSL_ARCH"; } \ + && nvm install $NODE_VERSION_LTS \ + && nvm alias default $NODE_VERSION_LTS \ + && nvm use default \ + && npm install -g pnpm \ + && pnpm -v \ + && pnpm config set unsafe-perm true + +ENV NODE_PATH=$NVM_DIR/versions/node/v$NODE_VERSION_LTS/lib/node_modules +ENV PATH=$NVM_DIR/versions/node/v$NODE_VERSION_LTS/bin:$PATH + +# Keep docker:dind's own ENTRYPOINT (dockerd-entrypoint.sh) +# NVM is available in exec shells via BASH_ENV diff --git a/Dockerfile_dbase_npmci b/Dockerfile_dbase_npmci new file mode 100644 index 0000000..0ba3fa9 --- /dev/null +++ b/Dockerfile_dbase_npmci @@ -0,0 +1,3 @@ +FROM host.today/ht-docker-node:dbase +LABEL author="Task Venture Capital GmbH " +RUN pnpm install -g @ship.zone/szci diff --git a/Dockerfile_fossglobal_preinstalled_##version## b/Dockerfile_fossglobal_preinstalled_##version## index 37d16da..7572059 100644 --- a/Dockerfile_fossglobal_preinstalled_##version## +++ b/Dockerfile_fossglobal_preinstalled_##version## @@ -1,12 +1,7 @@ FROM host.today/ht-docker-node:szci -RUN npm install -g \ +RUN pnpm install -g \ @git.zone/tsrun \ @git.zone/tstest \ - @push.rocks/qenv \ - @push.rocks/smartfile \ - @push.rocks/smartpath \ - @push.rocks/smartshell \ - @push.rocks/tapbundle \ - axios \ - @push.rocks/smartdelay \ - @push.rocks/smartjson + @git.zone/tsdocker \ + @git.zone/tsbundle \ + @git.zone/tools diff --git a/changelog.md b/changelog.md index 0f35f8c..0adee9b 100644 --- a/changelog.md +++ b/changelog.md @@ -1,5 +1,15 @@ # Changelog +## 2026-02-07 - 5.6.0 - feat(dockerfiles) +Add base Dockerfiles for dbase/dind, enable pnpm and stack-fix, update preinstalled image tooling and registries, and bump @git.zone/tsdocker devDependency + +- Added Dockerfile_dbase: Alpine-based docker image with nodejs-current, pnpm installation, python/pip setup, compiles /lib/stack-fix.so and sets LD_PRELOAD, and enables pnpm unsafe-perm. +- Added Dockerfile_dbase_dind: multi-stage docker:dind build that installs same toolchain, compiles stack-fix.so in build stage, copies pnpm/python artifacts to final stage, and preserves LD_PRELOAD. +- Added Dockerfile_dbase_npmci: lightweight image FROM hosttoday/ht-docker-dbase:latest that installs @ship.zone/npmci globally via pnpm. +- Updated Dockerfile_fossglobal_preinstalled_##version##: switched from npm to pnpm and replaced several global packages (removed push.rocks/* and axios; added @git.zone/tsdocker, @git.zone/tsbundle, @git.zone/tools). +- Updated npmextra.json: cleared szci.dockerRegistries and simplified @git.zone/tsdocker registries/registryRepoMap to only use code.foss.global and preserved platforms/testDir. +- Bumped devDependency @git.zone/tsdocker from ^1.17.0 to ^1.17.1 (patch bump). + ## 2026-02-07 - 5.5.2 - fix() no changes detected — no release necessary diff --git a/npmextra.json b/npmextra.json index 446493b..e8eca44 100644 --- a/npmextra.json +++ b/npmextra.json @@ -23,21 +23,14 @@ } }, "szci": { - "dockerRegistries": [ - "docker.io", - "registry.gitlab.com" - ] + "dockerRegistries": [] }, "@git.zone/tsdocker": { "registries": [ - "code.foss.global", - "registry.gitlab.com", - "docker.io" + "code.foss.global" ], "registryRepoMap": { - "code.foss.global": "host.today/ht-docker-node", - "registry.gitlab.com": "hosttoday/ht-docker-node", - "docker.io": "hosttoday/ht-docker-node" + "code.foss.global": "host.today/ht-docker-node" }, "platforms": ["linux/amd64", "linux/arm64"], "testDir": "./test" diff --git a/package.json b/package.json index 3ec9fad..d4b260a 100644 --- a/package.json +++ b/package.json @@ -35,6 +35,6 @@ "typescript" ], "devDependencies": { - "@git.zone/tsdocker": "^1.17.0" + "@git.zone/tsdocker": "^1.17.1" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 51bc84d..6d15c39 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -9,8 +9,8 @@ importers: .: devDependencies: '@git.zone/tsdocker': - specifier: ^1.17.0 - version: 1.17.0 + specifier: ^1.17.1 + version: 1.17.1 packages: @@ -45,8 +45,8 @@ packages: '@design.estate/dees-element@2.1.6': resolution: {integrity: sha512-7zyHkUjB8UEQgT9VbB2IJtc/yuPt9CI5JGel3b6BxA1kecY64ceIjFvof1uIkc0QP8q2fMLLY45r1c+9zDTjzg==} - '@git.zone/tsdocker@1.17.0': - resolution: {integrity: sha512-fM4PR/PkE+y6gEoe2TCfzjSvuanmD7cdNGcjxXQ8YgxMPcc1yu1c5JLu0ZMKuxI5RVG/6Blw8CT4G7smPCrL2w==} + '@git.zone/tsdocker@1.17.1': + resolution: {integrity: sha512-wfPtOr3n/NPaKhp0jhr8PbHeJZpNvX5JOVo7PLhZd5iV6sM0H+0pZ6Su7Fzz4ct2ETpvaShrBfM5U0o9QKe+RA==} hasBin: true '@inquirer/checkbox@3.0.1': @@ -1412,7 +1412,7 @@ snapshots: - supports-color - vue - '@git.zone/tsdocker@1.17.0': + '@git.zone/tsdocker@1.17.1': dependencies: '@push.rocks/lik': 6.2.2 '@push.rocks/npmextra': 5.3.3