Compare commits
156 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 39a635be23 | |||
| 59aa098bbb | |||
| e60d3a64a2 | |||
| 1d40374b43 | |||
| 3513318194 | |||
| ae95abd4df | |||
| fd4ef9ef54 | |||
| c8088a5103 | |||
| c4f2c3b9c5 | |||
| 9b84e0b72c | |||
| c107a02c8a | |||
| 667716ae2d | |||
| 20ef9c9a48 | |||
| 61a7c1cc7d | |||
| 5743898ba7 | |||
| c3847a970e | |||
| 2a7eb157b6 | |||
| 74c7bcd053 | |||
| e61aeaad2d | |||
| e1ad8c2d83 | |||
| 9aed8b7b40 | |||
| 165712267c | |||
| 391b13bf57 | |||
| cb455aa773 | |||
| 9b87ba1acb | |||
| 83a07732db | |||
| 66fd354b95 | |||
| bb8d623c95 | |||
| 3aea4a70ee | |||
| c6ba400214 | |||
| ab4275c430 | |||
| 76c86e09c1 | |||
| f2ab850e19 | |||
| 29c707d79f | |||
| 5789c4eea6 | |||
| 52369e55db | |||
| 13aadf4730 | |||
| 41cf74c307 | |||
| 8e48786393 | |||
| a00d36cf95 | |||
| 69ee21ed1b | |||
| 39bd0ea990 | |||
| cfc7ef07cf | |||
| 356dda054f | |||
| f0b993d9c0 | |||
| 75d68d1f2b | |||
| e9f77f7042 | |||
| 18e6b59ab1 | |||
| 2c2685dbcb | |||
| 592d71de80 | |||
| 2702d68891 | |||
| a04530e50c | |||
| c3e2190907 | |||
| 8d9767035d | |||
| 5bbf3e20fb | |||
| 5266959d11 | |||
| ca92e81fae | |||
| 47a7b99e55 | |||
| f945921591 | |||
| c0aaf75f4f | |||
| 5f64057cdb | |||
| d84919c3e6 | |||
| 1db9b7978a | |||
| ba19c565f6 | |||
| bcdd4d2acb | |||
| 662b888a35 | |||
| 004ce39822 | |||
| c1fb329671 | |||
| c2813373aa | |||
| 617fa0f082 | |||
| 1a6c1fcdf3 | |||
| 5f5f24d07d | |||
| 2973032ead | |||
| 05f2b58bdf | |||
| 2c30a475a0 | |||
| 944d2b4407 | |||
| 2a4cd64634 | |||
| 0eb5bb0723 | |||
| fefd97be8d | |||
| 2b65b6b1fe | |||
| d76ea8564a | |||
| f476d6c897 | |||
| 7a7aafec13 | |||
| 4184c17f2e | |||
| af4ceea6d0 | |||
| 53962dc4c4 | |||
| 1687273fd2 | |||
| d8bdab5b8d | |||
| 7a6f2f319e | |||
| 5160ed1348 | |||
| b5e8ac3b59 | |||
| bfb1b80180 | |||
| 3e0006f243 | |||
| 60e9a2a207 | |||
| 7422d9c146 | |||
| 5821c9f6e6 | |||
| 28746e0349 | |||
| 65cae1e013 | |||
| 39f8227d1e | |||
| 7831edc5f0 | |||
| 66699e8b07 | |||
| d7dd21bd69 | |||
| ad2fc45c8b | |||
| 02cdabd87b | |||
| e704131949 | |||
| c4b79e9d40 | |||
| df97e0f010 | |||
| 1a7aa7b178 | |||
| b1c1efce87 | |||
| c399621989 | |||
| e81806e9cc | |||
| b7961e0cf4 | |||
| 2319975b25 | |||
| c070b80cad | |||
| aaace28106 | |||
| 7c4a71cd4c | |||
| 1c0837c509 | |||
| 1912e3c727 | |||
| e758a35e0a | |||
| 5a3c7369d9 | |||
| 8b91eafe26 | |||
| 3ce538e94f | |||
| 00f0fae876 | |||
| ebb82a445c | |||
| 7ec5a147c9 | |||
| 385780e50c | |||
| b894a361bd | |||
| f0747237cf | |||
| 89ba2f5a9f | |||
| c295ad18be | |||
| afad2c3654 | |||
| 409b0c60a1 | |||
| feb57f1d36 | |||
| 80f0a0d9dc | |||
| c2ba244375 | |||
| f859d910b6 | |||
| bc71510cd1 | |||
| 181b3643b1 | |||
| 85bee13ba9 | |||
| 74c60c8d4f | |||
| 0c5f20ed36 | |||
| 4066098153 | |||
| a9fcf3c64e | |||
| 03cdeb1cd4 | |||
| d4cf1b5bc7 | |||
| 5da58d1f18 | |||
| ebd63262ab | |||
| af16867f69 | |||
| 812979b0bf | |||
| 1864b4f0e1 | |||
| 12c95e4da9 | |||
| 9cf189b77b | |||
| 8669c3cc70 | |||
| c005ac8995 | |||
| 594cbc119c | |||
| df92a41d60 |
14
.dockerignore
Normal file
14
.dockerignore
Normal file
@@ -0,0 +1,14 @@
|
||||
.git
|
||||
.nogit
|
||||
node_modules
|
||||
dist
|
||||
dist_*
|
||||
coverage
|
||||
public
|
||||
pages
|
||||
.yarn
|
||||
.cache
|
||||
.rpt2_cache
|
||||
*.md
|
||||
!image_support_files/**
|
||||
test
|
||||
71
.gitea/workflows/docker_nottags.yaml
Normal file
71
.gitea/workflows/docker_nottags.yaml
Normal file
@@ -0,0 +1,71 @@
|
||||
name: Docker (non-tag pushes)
|
||||
|
||||
on:
|
||||
push:
|
||||
tags-ignore:
|
||||
- '**'
|
||||
|
||||
env:
|
||||
IMAGE: registry.gitlab.com/hosttoday/ht-docker-node:szci
|
||||
NPMCI_COMPUTED_REPOURL: https://${{gitea.repository_owner}}:${{secrets.GITEA_TOKEN}}@gitea.lossless.digital/${{gitea.repository}}.git
|
||||
NPMCI_TOKEN_NPM: ${{secrets.NPMCI_TOKEN_NPM}}
|
||||
NPMCI_TOKEN_NPM2: ${{secrets.NPMCI_TOKEN_NPM2}}
|
||||
NPMCI_GIT_GITHUBTOKEN: ${{secrets.NPMCI_GIT_GITHUBTOKEN}}
|
||||
NPMCI_LOGIN_DOCKER_GITEA: ${{ github.server_url }}|${{ gitea.repository_owner }}|${{ secrets.GITEA_TOKEN }}
|
||||
NPMCI_LOGIN_DOCKER_DOCKERREGISTRY: ${{ secrets.NPMCI_LOGIN_DOCKER_DOCKERREGISTRY }}
|
||||
|
||||
jobs:
|
||||
security:
|
||||
runs-on: ubuntu-latest
|
||||
container:
|
||||
image: ${{ env.IMAGE }}
|
||||
continue-on-error: true
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
|
||||
- name: Install pnpm and szci
|
||||
run: |
|
||||
pnpm install -g pnpm
|
||||
pnpm install -g @ship.zone/szci
|
||||
szci npm prepare
|
||||
|
||||
- name: Audit production dependencies
|
||||
run: |
|
||||
szci command npm config set registry https://registry.npmjs.org
|
||||
szci command pnpm audit --audit-level=high --prod
|
||||
continue-on-error: true
|
||||
|
||||
- name: Audit development dependencies
|
||||
run: |
|
||||
szci command npm config set registry https://registry.npmjs.org
|
||||
szci command pnpm audit --audit-level=high --dev
|
||||
continue-on-error: true
|
||||
|
||||
test:
|
||||
needs: security
|
||||
runs-on: ubuntu-latest
|
||||
container:
|
||||
image: ${{ env.IMAGE }}
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
|
||||
- name: Prepare
|
||||
run: |
|
||||
pnpm install -g pnpm
|
||||
pnpm install -g @ship.zone/szci
|
||||
szci npm prepare
|
||||
|
||||
- name: Test stable
|
||||
run: |
|
||||
szci node install stable
|
||||
szci npm install
|
||||
szci npm test
|
||||
|
||||
- name: Test build
|
||||
run: |
|
||||
szci npm prepare
|
||||
szci node install stable
|
||||
szci npm install
|
||||
szci command npm run build
|
||||
113
.gitea/workflows/docker_tags.yaml
Normal file
113
.gitea/workflows/docker_tags.yaml
Normal file
@@ -0,0 +1,113 @@
|
||||
name: Docker (tags)
|
||||
|
||||
on:
|
||||
push:
|
||||
tags:
|
||||
- '*'
|
||||
|
||||
env:
|
||||
IMAGE: code.foss.global/host.today/ht-docker-node:szci
|
||||
NPMCI_COMPUTED_REPOURL: https://${{gitea.repository_owner}}:${{secrets.GITEA_TOKEN}}@gitea.lossless.digital/${{gitea.repository}}.git
|
||||
# NPMCI_TOKEN_NPM: ${{secrets.NPMCI_TOKEN_NPM}}
|
||||
# NPMCI_TOKEN_NPM2: ${{secrets.NPMCI_TOKEN_NPM2}}
|
||||
# NPMCI_GIT_GITHUBTOKEN: ${{secrets.NPMCI_GIT_GITHUBTOKEN}}
|
||||
# NPMCI_LOGIN_DOCKER_GITEA: ${{ github.server_url }}|${{ gitea.repository_owner }}|${{ secrets.GITEA_TOKEN }}
|
||||
NPMCI_LOGIN_DOCKER_DOCKERREGISTRY: ${{ secrets.NPMCI_LOGIN_DOCKER_DOCKERREGISTRY }}
|
||||
|
||||
jobs:
|
||||
security:
|
||||
runs-on: ubuntu-latest
|
||||
container:
|
||||
image: ${{ env.IMAGE }}
|
||||
continue-on-error: true
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
|
||||
- name: Prepare
|
||||
run: |
|
||||
pnpm install -g pnpm
|
||||
pnpm install -g @ship.zone/szci
|
||||
szci npm prepare
|
||||
|
||||
- name: Audit production dependencies
|
||||
run: |
|
||||
szci command npm config set registry https://registry.npmjs.org
|
||||
szci command pnpm audit --audit-level=high --prod
|
||||
continue-on-error: true
|
||||
|
||||
- name: Audit development dependencies
|
||||
run: |
|
||||
szci command npm config set registry https://registry.npmjs.org
|
||||
szci command pnpm audit --audit-level=high --dev
|
||||
continue-on-error: true
|
||||
|
||||
test:
|
||||
needs: security
|
||||
runs-on: ubuntu-latest
|
||||
container:
|
||||
image: ${{ env.IMAGE }}
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
|
||||
- name: Prepare
|
||||
run: |
|
||||
pnpm install -g pnpm
|
||||
pnpm install -g @ship.zone/szci
|
||||
szci npm prepare
|
||||
|
||||
- name: Test stable
|
||||
run: |
|
||||
szci node install stable
|
||||
szci npm install
|
||||
szci npm test
|
||||
|
||||
- name: Test build
|
||||
run: |
|
||||
szci node install stable
|
||||
szci npm install
|
||||
szci command npm run build
|
||||
|
||||
release:
|
||||
needs: test
|
||||
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/')
|
||||
runs-on: ubuntu-latest
|
||||
container:
|
||||
image: code.foss.global/host.today/ht-docker-dbase:szci
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
|
||||
- name: Prepare
|
||||
run: |
|
||||
pnpm install -g pnpm
|
||||
pnpm install -g @git.zone/tsdocker@latest
|
||||
|
||||
- name: Login to registries
|
||||
run: tsdocker login
|
||||
|
||||
- name: List discovered Dockerfiles
|
||||
run: tsdocker list
|
||||
|
||||
- name: Build all images
|
||||
run: tsdocker build
|
||||
|
||||
- name: Test images
|
||||
run: tsdocker test
|
||||
|
||||
- name: Push to code.foss.global
|
||||
run: tsdocker push code.foss.global
|
||||
|
||||
metadata:
|
||||
needs: test
|
||||
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/')
|
||||
runs-on: ubuntu-latest
|
||||
container:
|
||||
image: ${{ env.IMAGE }}
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
|
||||
- name: Trigger
|
||||
run: szci trigger
|
||||
@@ -1,52 +0,0 @@
|
||||
# gitzone ci_docker
|
||||
image: registry.gitlab.com/hosttoday/ht-docker-node:npmci
|
||||
|
||||
cache:
|
||||
paths:
|
||||
- .npmci-cache/
|
||||
key: "$CI_BUILD_STAGE"
|
||||
|
||||
before_script:
|
||||
- npmci npm prepare
|
||||
|
||||
stages:
|
||||
- test
|
||||
- release
|
||||
- trigger
|
||||
- pages
|
||||
|
||||
testStable:
|
||||
stage: test
|
||||
script:
|
||||
- npmci node install stable
|
||||
- npmci npm install
|
||||
- npmci npm test
|
||||
coverage: /\d+.?\d+?\%\s*coverage/
|
||||
tags:
|
||||
- docker
|
||||
|
||||
release:
|
||||
image: registry.gitlab.com/hosttoday/ht-docker-dbase:npmci
|
||||
services:
|
||||
- docker:stable-dind
|
||||
stage: release
|
||||
script:
|
||||
- npmci node install lts
|
||||
- npmci docker login
|
||||
- npmci docker build
|
||||
- npmci docker test
|
||||
- npmci docker push registry.gitlab.com
|
||||
only:
|
||||
- tags
|
||||
tags:
|
||||
- docker
|
||||
- priv
|
||||
|
||||
trigger:
|
||||
stage: trigger
|
||||
script:
|
||||
- npmci trigger
|
||||
only:
|
||||
- tags
|
||||
tags:
|
||||
- docker
|
||||
114
Dockerfile
114
Dockerfile
@@ -1,44 +1,51 @@
|
||||
FROM ubuntu:bionic
|
||||
LABEL author="Lossless GmbH <hello@lossless.com>"
|
||||
FROM ubuntu:24.04
|
||||
LABEL author="Task Venture Capital GmbH <hello@task.vc>"
|
||||
|
||||
WORKDIR /workspace
|
||||
# important environment variables
|
||||
ENV NODE_VERSION_LTS="16.14.2" NODE_VERSION_STABLE="17.8.0" NVM_DIR="/usr/local/nvm"
|
||||
# important environment variables
|
||||
ENV NODE_VERSION_LTS="24.13.0" NODE_VERSION_STABLE="24.13.0" NVM_DIR="/usr/local/nvm"
|
||||
|
||||
# Set debconf to run non-interactively and install packages
|
||||
# Chromium paths for Puppeteer/Playwright compatibility
|
||||
ENV PUPPETEER_EXECUTABLE_PATH=/usr/bin/chromium-browser
|
||||
ENV CHROME_BIN=/usr/bin/chromium-browser
|
||||
|
||||
# Layer 1: Base system + dev tools
|
||||
RUN echo 'debconf debconf/frontend select Noninteractive' | debconf-set-selections \
|
||||
&& apt-get update \
|
||||
&& apt-get upgrade --no-install-recommends -y \
|
||||
&& apt-get install -y -q --no-install-recommends \
|
||||
# base libs
|
||||
software-properties-common \
|
||||
apt-transport-https \
|
||||
build-essential \
|
||||
ca-certificates \
|
||||
gpg-agent \
|
||||
curl \
|
||||
g++ \
|
||||
gcc \
|
||||
git \
|
||||
make \
|
||||
openssl \
|
||||
python \
|
||||
python3 \
|
||||
rsync \
|
||||
ssh \
|
||||
wget \
|
||||
# puppeteer
|
||||
gconf-service \
|
||||
libasound2 \
|
||||
unzip \
|
||||
iputils-ping \
|
||||
dnsutils \
|
||||
tini \
|
||||
&& apt-get clean
|
||||
|
||||
# Layer 2: Chromium + Puppeteer/Playwright browser deps
|
||||
RUN apt-get install -y -q --no-install-recommends \
|
||||
chromium-browser \
|
||||
libasound2t64 \
|
||||
libatk1.0-0 \
|
||||
libatk-bridge2.0-0 \
|
||||
libc6 \
|
||||
libcairo2 \
|
||||
libcups2 \
|
||||
libdbus-1-3 \
|
||||
libexpat1 \
|
||||
libfontconfig1 \
|
||||
libgcc1 \
|
||||
libgconf-2-4 \
|
||||
libgbm1 \
|
||||
libgcc-s1 \
|
||||
libgdk-pixbuf2.0-0 \
|
||||
libglib2.0-0 \
|
||||
libgtk-3-0 \
|
||||
@@ -59,25 +66,72 @@ RUN echo 'debconf debconf/frontend select Noninteractive' | debconf-set-selectio
|
||||
libxrender1 \
|
||||
libxss1 \
|
||||
libxtst6 \
|
||||
ca-certificates \
|
||||
fonts-liberation \
|
||||
libappindicator1 \
|
||||
libayatana-appindicator3-1 \
|
||||
libnss3 \
|
||||
lsb-release \
|
||||
xdg-utils \
|
||||
|
||||
# chrome
|
||||
&& wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb \
|
||||
&& apt install -y -q --no-install-recommends ./google-chrome-stable_current_amd64.deb \
|
||||
|
||||
# mongodb
|
||||
&& curl -fsSL https://www.mongodb.org/static/pgp/server-4.4.asc | apt-key add - \
|
||||
&& echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu bionic/mongodb-org/4.4 multiverse" | tee /etc/apt/sources.list.d/mongodb-org-4.4.list \
|
||||
&& apt-get update \
|
||||
&& apt-get install -y -q --no-install-recommends \
|
||||
mongodb-org \
|
||||
&& apt-get clean \
|
||||
&& rm -r /var/lib/apt/lists/*
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
|
||||
# Layer 3: MongoDB 8.0
|
||||
RUN curl -fsSL https://www.mongodb.org/static/pgp/server-8.0.asc | \
|
||||
gpg --dearmor -o /usr/share/keyrings/mongodb-server-8.0.gpg \
|
||||
&& echo "deb [ arch=amd64,arm64 signed-by=/usr/share/keyrings/mongodb-server-8.0.gpg ] https://repo.mongodb.org/apt/ubuntu noble/mongodb-org/8.0 multiverse" | \
|
||||
tee /etc/apt/sources.list.d/mongodb-org-8.0.list \
|
||||
&& apt-get update \
|
||||
&& apt-get install -y -q --no-install-recommends mongodb-org \
|
||||
&& apt-get clean \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
|
||||
# Install nvm with node and npm
|
||||
RUN curl https://raw.githubusercontent.com/creationix/nvm/v0.33.8/install.sh | bash
|
||||
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 (interactive + non-interactive)
|
||||
# IMPORTANT: Prepend to bashrc, before the "[ -z "$PS1" ] && return" line
|
||||
RUN printf '%s\n%s\n%s\n\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"' \
|
||||
"$(cat /etc/bash.bashrc)" > /etc/bash.bashrc
|
||||
|
||||
# Copy nvm wrapper scripts from support directory
|
||||
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 (CI/CD workflows)
|
||||
ENV BASH_ENV=/etc/bash.bashrc
|
||||
|
||||
# prepare pnpm
|
||||
ENV PNPM_HOME="/root/.local/share/pnpm/pnpm"
|
||||
RUN mkdir -p ${PNPM_HOME}
|
||||
ENV PATH="$PNPM_HOME:$PATH"
|
||||
|
||||
# Now nvm is available directly without sourcing
|
||||
RUN nvm install $NODE_VERSION_STABLE \
|
||||
&& nvm alias default $NODE_VERSION_STABLE \
|
||||
&& nvm use default \
|
||||
&& curl -fsSL https://get.pnpm.io/install.sh | bash - \
|
||||
&& pnpm -v \
|
||||
&& pnpm config set unsafe-perm true
|
||||
|
||||
ENV NODE_PATH $NVM_DIR/versions/node/v$NODE_VERSION_STABLE/lib/node_modules
|
||||
ENV PATH $NVM_DIR/versions/node/v$NODE_VERSION_STABLE/bin:$PATH
|
||||
|
||||
# Install Bun
|
||||
RUN curl -fsSL https://bun.sh/install | bash
|
||||
ENV BUN_INSTALL="/root/.bun"
|
||||
ENV PATH="$BUN_INSTALL/bin:$PATH"
|
||||
|
||||
# Install Deno
|
||||
RUN curl -fsSL https://deno.land/install.sh | sh
|
||||
ENV DENO_INSTALL="/root/.deno"
|
||||
ENV PATH="$DENO_INSTALL/bin:$PATH"
|
||||
|
||||
# Set entrypoint to make nvm available in all runtime contexts
|
||||
ENTRYPOINT ["/usr/bin/tini", "--", "/usr/local/bin/docker-entrypoint.sh"]
|
||||
CMD ["bash"]
|
||||
|
||||
@@ -1,10 +0,0 @@
|
||||
FROM node:17.8.0-alpine
|
||||
LABEL author="Lossless GmbH <hello@lossless.com>"
|
||||
RUN apk update && apk add bash libc6-compat alpine-sdk
|
||||
ENV PYTHONUNBUFFERED=1
|
||||
RUN apk add --update --no-cache python3 && ln -sf python3 /usr/bin/python
|
||||
RUN python3 -m ensurepip
|
||||
RUN pip3 install --no-cache --upgrade pip setuptools
|
||||
|
||||
|
||||
ENV NODE_OPTIONS="--max_old_space_size=1000"
|
||||
59
Dockerfile_alpine-bun
Normal file
59
Dockerfile_alpine-bun
Normal file
@@ -0,0 +1,59 @@
|
||||
FROM alpine:latest
|
||||
LABEL author="Task Venture Capital GmbH <hello@task.vc>"
|
||||
|
||||
WORKDIR /workspace
|
||||
|
||||
# Important environment variables
|
||||
ENV NODE_VERSION_LTS="24.13.0" \
|
||||
NVM_DIR="/usr/local/nvm" \
|
||||
BUN_INSTALL="/root/.bun" \
|
||||
NVM_NODEJS_ORG_MIRROR="https://unofficial-builds.nodejs.org/download/release"
|
||||
|
||||
# Install required packages for NVM and Node.js
|
||||
RUN apk add --no-cache \
|
||||
bash \
|
||||
curl \
|
||||
git \
|
||||
ca-certificates \
|
||||
unzip \
|
||||
libstdc++ \
|
||||
tini
|
||||
|
||||
# Install NVM (latest version for better Alpine/musl support)
|
||||
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 (interactive + non-interactive)
|
||||
# IMPORTANT: Create /etc/bash.bashrc with nvm initialization
|
||||
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 from support directory
|
||||
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 (CI/CD workflows)
|
||||
ENV BASH_ENV=/etc/bash.bashrc
|
||||
|
||||
# Install Node.js LTS via NVM and Bun
|
||||
# TARGETARCH fix: QEMU buildx can report wrong arch via uname -m
|
||||
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 \
|
||||
&& curl -fsSL https://bun.sh/install | bash
|
||||
|
||||
ENV PATH="$BUN_INSTALL/bin:$NVM_DIR/versions/node/v$NODE_VERSION_LTS/bin:$PATH"
|
||||
ENV NODE_PATH=$NVM_DIR/versions/node/v$NODE_VERSION_LTS/lib/node_modules
|
||||
|
||||
# Set entrypoint to make nvm available in all runtime contexts
|
||||
ENTRYPOINT ["/sbin/tini", "--", "/usr/local/bin/docker-entrypoint.sh"]
|
||||
CMD ["bash"]
|
||||
59
Dockerfile_alpine-deno
Normal file
59
Dockerfile_alpine-deno
Normal file
@@ -0,0 +1,59 @@
|
||||
FROM alpine:edge
|
||||
LABEL author="Task Venture Capital GmbH <hello@task.vc>"
|
||||
|
||||
WORKDIR /workspace
|
||||
|
||||
# Important environment variables
|
||||
ENV NODE_VERSION_LTS="24.13.0" \
|
||||
NVM_DIR="/usr/local/nvm" \
|
||||
NVM_NODEJS_ORG_MIRROR="https://unofficial-builds.nodejs.org/download/release"
|
||||
|
||||
# Install required packages for NVM and Node.js
|
||||
# Install Deno from Alpine community repository (native musl build)
|
||||
RUN apk add --no-cache \
|
||||
bash \
|
||||
curl \
|
||||
git \
|
||||
ca-certificates \
|
||||
unzip \
|
||||
libstdc++ \
|
||||
tini \
|
||||
deno
|
||||
|
||||
# Install NVM (latest version for better Alpine/musl support)
|
||||
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 (interactive + non-interactive)
|
||||
# IMPORTANT: Create /etc/bash.bashrc with nvm initialization
|
||||
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 from support directory
|
||||
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 (CI/CD workflows)
|
||||
ENV BASH_ENV=/etc/bash.bashrc
|
||||
|
||||
# Install Node.js LTS via NVM (Deno already installed from Alpine repos)
|
||||
# TARGETARCH fix: QEMU buildx can report wrong arch via uname -m
|
||||
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
|
||||
|
||||
ENV PATH="$NVM_DIR/versions/node/v$NODE_VERSION_LTS/bin:$PATH"
|
||||
ENV NODE_PATH=$NVM_DIR/versions/node/v$NODE_VERSION_LTS/lib/node_modules
|
||||
|
||||
# Set entrypoint to make nvm available in all runtime contexts
|
||||
ENTRYPOINT ["/sbin/tini", "--", "/usr/local/bin/docker-entrypoint.sh"]
|
||||
CMD ["bash"]
|
||||
74
Dockerfile_alpine-node
Normal file
74
Dockerfile_alpine-node
Normal file
@@ -0,0 +1,74 @@
|
||||
FROM alpine:latest
|
||||
LABEL author="Task Venture Capital GmbH <hello@task.vc>"
|
||||
|
||||
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"
|
||||
|
||||
# Install required packages for NVM and Node.js
|
||||
RUN apk add --no-cache \
|
||||
bash \
|
||||
curl \
|
||||
git \
|
||||
build-base \
|
||||
python3 \
|
||||
linux-headers \
|
||||
ca-certificates \
|
||||
wget \
|
||||
unzip \
|
||||
iputils \
|
||||
bind-tools \
|
||||
libstdc++ \
|
||||
tini
|
||||
|
||||
# Install NVM (latest version for better Alpine/musl support)
|
||||
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 (interactive + non-interactive)
|
||||
# IMPORTANT: Create /etc/bash.bashrc with nvm initialization
|
||||
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 from support directory
|
||||
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 (CI/CD workflows)
|
||||
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
|
||||
# Use musl-specific builds from unofficial-builds for Alpine compatibility
|
||||
# TARGETARCH fix: QEMU buildx can report wrong arch via uname -m, causing NVM
|
||||
# to download x64 binaries on arm64. We create a temporary uname wrapper to
|
||||
# ensure the correct architecture binary is downloaded.
|
||||
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
|
||||
|
||||
# Set entrypoint to make nvm available in all runtime contexts
|
||||
ENTRYPOINT ["/sbin/tini", "--", "/usr/local/bin/docker-entrypoint.sh"]
|
||||
CMD ["bash"]
|
||||
11
Dockerfile_alpine-szci
Normal file
11
Dockerfile_alpine-szci
Normal file
@@ -0,0 +1,11 @@
|
||||
FROM host.today/ht-docker-node:alpine-node
|
||||
ENV PYTHONUNBUFFERED=1
|
||||
RUN apk add --no-cache \
|
||||
libc6-compat \
|
||||
alpine-sdk \
|
||||
python3-dev \
|
||||
py3-pip \
|
||||
libffi-dev \
|
||||
openssl-dev \
|
||||
&& ln -sf python3 /usr/bin/python \
|
||||
&& pnpm install -g @ship.zone/szci node-gyp
|
||||
64
Dockerfile_dbase
Normal file
64
Dockerfile_dbase
Normal file
@@ -0,0 +1,64 @@
|
||||
FROM docker:latest
|
||||
LABEL author="Task Venture Capital GmbH <hello@task.vc>"
|
||||
|
||||
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 \
|
||||
&& pnpm install -g @ship.zone/szci
|
||||
|
||||
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"]
|
||||
63
Dockerfile_dbase_dind
Normal file
63
Dockerfile_dbase_dind
Normal file
@@ -0,0 +1,63 @@
|
||||
FROM docker:dind
|
||||
LABEL author="Task Venture Capital GmbH <hello@task.vc>"
|
||||
|
||||
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 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 (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 \
|
||||
&& pnpm install -g @ship.zone/szci
|
||||
|
||||
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"]
|
||||
7
Dockerfile_fossglobal_preinstalled_##version##
Normal file
7
Dockerfile_fossglobal_preinstalled_##version##
Normal file
@@ -0,0 +1,7 @@
|
||||
FROM host.today/ht-docker-node:szci
|
||||
RUN pnpm install -g \
|
||||
@git.zone/tsrun \
|
||||
@git.zone/tstest \
|
||||
@git.zone/tsdocker \
|
||||
@git.zone/tsbundle \
|
||||
@git.zone/tools
|
||||
@@ -1,12 +0,0 @@
|
||||
FROM hosttoday/ht-docker-node:stable as stage1
|
||||
LABEL author="Lossless GmbH <hello@lossless.com>"
|
||||
RUN apt-get update && apt-get install -y --no-install-recommends qemu-user-static binfmt-support
|
||||
# the following lines need to be run on a system that supports both architectures
|
||||
# update-binfmts --enable qemu-arm \
|
||||
# && update-binfmts --display qemu-arm \
|
||||
# && mount binfmt_misc -t binfmt_misc /proc/sys/fs/binfmt_misc \
|
||||
# && echo ':arm:M::\x7fELF\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x28\x00:\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff:/usr/bin/qemu-arm-static:' > /proc/sys/fs/binfmt_misc/register
|
||||
|
||||
FROM arm32v7/node:lts-jessie as stage2
|
||||
COPY --from=stage1 /usr/bin/qemu-arm-static /usr/bin/qemu-arm-static
|
||||
|
||||
@@ -1,13 +1,8 @@
|
||||
FROM hosttoday/ht-docker-node:latest
|
||||
LABEL author="Lossless GmbH <hello@lossless.com>"
|
||||
FROM host.today/ht-docker-node:latest
|
||||
LABEL author="Task Venture Capital GmbH <hello@task.vc>"
|
||||
|
||||
RUN bash -c "source $NVM_DIR/nvm.sh \
|
||||
&& nvm install $NODE_VERSION_LTS \
|
||||
&& nvm alias default $NODE_VERSION_LTS \
|
||||
&& nvm use default \
|
||||
&& npm config set unsafe-perm true \
|
||||
&& npm install -g agentkeepalive \
|
||||
&& npm install -g npm"
|
||||
&& nvm install $NODE_VERSION_LTS"
|
||||
|
||||
ENV NODE_PATH $NVM_DIR/v$NODE_VERSION_LTS/lib/node_modules
|
||||
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
|
||||
@@ -1,4 +0,0 @@
|
||||
FROM hosttoday/ht-docker-node:stable
|
||||
LABEL author="Lossless GmbH <hello@lossless.com>"
|
||||
|
||||
RUN npm install -g @shipzone/npmci
|
||||
@@ -1,13 +0,0 @@
|
||||
FROM hosttoday/ht-docker-node:latest
|
||||
LABEL author="Lossless GmbH <hello@lossless.com>"
|
||||
|
||||
RUN bash -c "source $NVM_DIR/nvm.sh \
|
||||
&& nvm install $NODE_VERSION_STABLE \
|
||||
&& nvm alias default $NODE_VERSION_STABLE \
|
||||
&& nvm use default \
|
||||
&& npm config set unsafe-perm true \
|
||||
&& npm install -g agentkeepalive \
|
||||
&& npm install -g npm"
|
||||
|
||||
ENV NODE_PATH $NVM_DIR/v$NODE_VERSION_STABLE/lib/node_modules
|
||||
ENV PATH $NVM_DIR/versions/node/v$NODE_VERSION_STABLE/bin:$PATH
|
||||
@@ -1,6 +0,0 @@
|
||||
FROM hosttoday/ht-docker-node:stable
|
||||
# Add Tini
|
||||
ENV TINI_VERSION v0.19.0
|
||||
ADD https://github.com/krallin/tini/releases/download/${TINI_VERSION}/tini /tini
|
||||
RUN chmod +x /tini
|
||||
ENTRYPOINT ["/tini", "--"]
|
||||
4
Dockerfile_szci
Normal file
4
Dockerfile_szci
Normal file
@@ -0,0 +1,4 @@
|
||||
FROM host.today/ht-docker-node:latest
|
||||
LABEL author="Task Venture Capital GmbH <hello@task.vc>"
|
||||
|
||||
RUN pnpm install -g @ship.zone/szci
|
||||
2
LICENSE
2
LICENSE
@@ -1,6 +1,6 @@
|
||||
The MIT License (MIT)
|
||||
|
||||
Copyright (c) 2016 Lossless GmbH
|
||||
Copyright (c) 2016 Task Venture Capital GmbH
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
|
||||
203
changelog.md
Normal file
203
changelog.md
Normal file
@@ -0,0 +1,203 @@
|
||||
# Changelog
|
||||
|
||||
## 2026-02-07 - 5.7.0 - feat(docker)
|
||||
install @ship.zone/szci in base images, add docker-entrypoint and use tini, remove deprecated Dockerfile_dbase_npmci, bump @git.zone/tsdocker devDependency to ^1.17.4
|
||||
|
||||
- Dockerfile_dbase: install @ship.zone/szci globally via pnpm
|
||||
- Dockerfile_dbase_dind: add docker-entrypoint.sh and make it executable, consolidate chmod, set ENTRYPOINT to run tini with the new entrypoint and default CMD to ["bash"], and install @ship.zone/szci
|
||||
- Remove Dockerfile_dbase_npmci (deleted)
|
||||
- package.json: bump devDependency @git.zone/tsdocker from ^1.17.1 to ^1.17.4
|
||||
|
||||
## 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
|
||||
|
||||
- No files changed in the provided git diff
|
||||
- Current package.json version is 5.5.1
|
||||
|
||||
## 2026-02-07 - 5.5.1 - fix(docker)
|
||||
normalize NODE_PATH and harden Dockerfile installs; use curl -fsSL; consolidate Alpine apk installs; update .dockerignore; bump @git.zone/tsdocker devDependency
|
||||
|
||||
- Change NODE_PATH to $NVM_DIR/versions/node/v... across Dockerfiles to match nvm layout
|
||||
- Use curl -fsSL for non-interactive installs
|
||||
- Run apt-get clean and remove /var/lib/apt/lists to reduce image size and ensure clean state
|
||||
- Consolidate apk add commands and ensure python3 symlink and pnpm global installs in Alpine image
|
||||
- Add .dockerignore entries to exclude build artifacts and include image_support_files
|
||||
- Bump devDependency @git.zone/tsdocker from ^1.15.1 to ^1.16.0
|
||||
|
||||
## 2026-02-07 - 5.5.0 - feat(docker)
|
||||
Rework Dockerfile into layered installs and add tooling (tini, chromium, MongoDB); simplify Alpine CI image Python/pip setup; add tsdocker devDependency; remove npmextra push flag; update README and registry links
|
||||
|
||||
- Dockerfile: split apt installs into logical layers, added tini, iputils-ping and dnsutils, moved chromium-browser into its own layer, and fixed apt cache cleanup (rm -rf)
|
||||
- Dockerfile: add MongoDB 8.0 apt repository and install in a dedicated layer
|
||||
- Alpine image (Dockerfile_alpine-szci): consolidated python3 and py3-pip install (removed ensurepip + manual pip upgrade)
|
||||
- package.json: add devDependency @git.zone/tsdocker@^1.15.1
|
||||
- npmextra.json: removed "push": false flag (affects CI/publish behavior)
|
||||
- README: update registry URLs to code.foss.global, document tini and NVM behavior, refresh image descriptions and links
|
||||
|
||||
## 2026-02-06 - 5.4.0 - feat(ci)
|
||||
replace npmci with szci across CI and images; add szci preinstalled images and make tini the PID 1 init in Docker images
|
||||
|
||||
- Replace @ship.zone/npmci with @ship.zone/szci in Gitea CI workflows (.gitea/workflows/docker_nottags.yaml, docker_tags.yaml) and update commands to use szci
|
||||
- Add szci-specific Dockerfiles (Dockerfile_szci, Dockerfile_alpine-szci) and tests (test/test_szci.sh); remove npmci-specific files
|
||||
- Install and use tini as PID 1 in multiple Dockerfiles and switch ENTRYPOINT to run tini for proper signal forwarding and zombie reaping
|
||||
- Update metadata/manifest files (package.json, npmextra.json, readme.*, Dockerfile base tags) to reference szci and document the inclusion of tini
|
||||
|
||||
## 2026-02-06 - 5.3.0 - feat(docker)
|
||||
add Chromium support for Puppeteer/Playwright and npm build/release scripts
|
||||
|
||||
- Add PUPPETEER_EXECUTABLE_PATH and CHROME_BIN env vars pointing to /usr/bin/chromium-browser for Puppeteer/Playwright compatibility
|
||||
- Replace Google Chrome .deb download with apt-get install chromium-browser for multi-arch (amd64/arm64) compatibility
|
||||
- Add npm scripts: 'build' -> 'tsdocker build' and 'release' -> 'tsdocker push' in package.json
|
||||
|
||||
## 2026-02-06 - 5.2.0 - feat(ci)
|
||||
switch CI to use @git.zone/tsdocker and add tsdocker config and image tests
|
||||
|
||||
- Replace @ship.zone/npmci with @git.zone/tsdocker in CI workflow and use tsdocker commands: login, list, build, test, push
|
||||
- Add npmextra.json configuration for @git.zone/tsdocker (registries, registryRepoMap, platforms, push/testDir)
|
||||
- Add Dockerfile_alpine-npmci and per-image test scripts under test/ (alpine-bun, alpine-deno, alpine-node)
|
||||
- Remove legacy Alpine Dockerfiles and legacy build/test scripts (Dockerfile_alpine_node/deno/bun/_npmci, build-alpine-images.sh, test-alpine-images.sh)
|
||||
- Update LICENSE copyright owner to Task Venture Capital GmbH
|
||||
|
||||
## 2025-10-26 - 5.1.0 - feat(alpine-deno)
|
||||
Improve alpine deno image: switch to alpine:edge and use native Deno package, remove glibc workaround, update NVM/PATH, add local tooling settings and expanded README
|
||||
|
||||
- Dockerfile_alpine_deno: switch base image from alpine:latest to alpine:edge to use Alpine community Deno package
|
||||
- Install Deno via apk (native musl build) and remove previous glibc installation/workaround
|
||||
- Remove DENO_INSTALL env and adjust PATH to include NVM-managed Node binary path
|
||||
- Keep NVM installation and make nvm available globally; set NODE_VERSION_LTS and default alias
|
||||
- Add .claude/settings.local.json with local permissions for build/run tooling
|
||||
- Add / expand README (readme.md) with usage, flavours and NVM/npmci guidance
|
||||
|
||||
## 2025-10-26 - 5.0.148 - feat(alpine)
|
||||
Major restructuring: Multi-architecture Alpine Docker images with modern runtime support
|
||||
|
||||
**Breaking Changes:**
|
||||
- Removed `Dockerfile_alpine` (replaced by `Dockerfile_alpine_node`)
|
||||
- Removed `Dockerfile_iot` (no longer needed with multi-arch approach)
|
||||
- Tag naming simplified: `:alpine-node` instead of `:alpine-x64-node` and `:alpine-arm64-node`
|
||||
|
||||
**New Multi-Architecture Alpine Images (3 variants):**
|
||||
|
||||
All images support both amd64 and arm64 architectures natively:
|
||||
- `Dockerfile_alpine_node` → `:alpine-node` - Alpine with Node.js LTS + NVM + pnpm
|
||||
- `Dockerfile_alpine_deno` → `:alpine-deno` - Alpine with Node.js LTS + NVM + Deno
|
||||
- `Dockerfile_alpine_bun` → `:alpine-bun` - Alpine with Node.js LTS + NVM + Bun
|
||||
|
||||
**Technical Improvements:**
|
||||
- **Multi-architecture support**: Single Docker image works natively on both x64 (AMD64) and ARM64 (Apple Silicon, ARM servers)
|
||||
- **docker buildx integration**: Build script uses buildx for proper multi-platform image creation
|
||||
- **Native performance**: No emulation needed - images run at full native speed on both architectures
|
||||
- **Automatic platform selection**: Docker automatically pulls the correct architecture variant
|
||||
- Full NVM support in all Alpine images (v0.40.1)
|
||||
- Node.js musl builds from unofficial-builds.nodejs.org for Alpine compatibility
|
||||
- Significantly smaller image sizes (200-300MB vs 800MB+ Ubuntu)
|
||||
- All images include NVM for flexible version management
|
||||
- Reused wrapper scripts from Ubuntu base for consistency
|
||||
- Added Bun and Deno runtime support
|
||||
|
||||
**Build & Test Infrastructure:**
|
||||
- Updated `build-alpine-images.sh` to use `docker buildx` with native platform builds for local testing
|
||||
- Updated `test-alpine-images.sh` to test 3 multi-arch images instead of 9 architecture-specific images
|
||||
- Simplified test suite focuses on runtime functionality and NVM version switching
|
||||
|
||||
**Documentation:**
|
||||
- Updated README with multi-architecture approach explanation
|
||||
- Simplified examples using new tag names (`:alpine-node`, `:alpine-deno`, `:alpine-bun`)
|
||||
- Added cross-platform development examples
|
||||
- Documented native performance benefits
|
||||
- Removed architecture-specific instructions (no longer needed)
|
||||
|
||||
## 2025-10-26 - 5.0.147 - feat(nvm)
|
||||
Enable full nvm support in Docker builds and CI/CD workflows
|
||||
|
||||
- Added global nvm configuration in /etc/bash.bashrc (prepended before interactive check)
|
||||
- Created bash-with-nvm wrapper for Dockerfile RUN commands
|
||||
- Added intelligent ENTRYPOINT for runtime nvm support
|
||||
- nvm commands now work directly in Dockerfile RUN without manual sourcing
|
||||
- nvm commands work in CI/CD workflow bash -c scripts automatically
|
||||
- Changed default SHELL directive to use nvm wrapper
|
||||
- Backward compatible: npmci still available, ENV PATH preserved for fallback
|
||||
- Non-bash shells fall back to ENV PATH (v20.12.2)
|
||||
- Both interactive and non-interactive shells have full nvm access
|
||||
|
||||
## 2024-11-17 - 5.0.146 - fix(Dockerfiles)
|
||||
Correct Docker image source host in various Dockerfiles
|
||||
|
||||
- Updated the source host from 'hosttoday/ht-docker-node' to 'host.today/ht-docker-node' in several Dockerfiles
|
||||
|
||||
## 2024-11-17 - 5.0.145 - fix(docs)
|
||||
Minor documentation updates without code changes.
|
||||
|
||||
|
||||
## 2024-11-17 - 5.0.144 - fix(ci)
|
||||
Update Docker container source for workflow to new registry
|
||||
|
||||
- Changed Docker container image source in .gitea/workflows/docker_tags.yaml to code.foss.global.
|
||||
|
||||
## 2024-11-17 - 5.0.143 - fix(core)
|
||||
No uncommitted changes
|
||||
|
||||
- No changes detected. All files are up-to-date.
|
||||
|
||||
## 2024-05-26 - 5.0.139 to 5.0.142 - Core updates
|
||||
Routine updates to the core functionality.
|
||||
|
||||
## 2024-05-23 - 5.0.124 to 5.0.138 - Core updates
|
||||
Routine updates to the core functionality.
|
||||
|
||||
## 2024-04-23 - 5.0.114 to 5.0.123 - Core updates
|
||||
Routine updates to the core functionality.
|
||||
|
||||
## 2024-04-14 - 5.0.113 to 5.0.113 - Core updates
|
||||
Routine updates to the core functionality.
|
||||
|
||||
## 2023-04-02 - 5.0.105 to 5.0.112 - Core updates
|
||||
Routine updates to the core functionality.
|
||||
|
||||
## 2022-12-17 - 5.0.101 to 5.0.104 - Core updates
|
||||
Routine updates to the core functionality.
|
||||
|
||||
## 2022-10-17 - 5.0.91 to 5.0.100 - Core updates
|
||||
Routine updates to the core functionality.
|
||||
|
||||
## 2022-10-11 - 5.0.85 to 5.0.90 - Core updates
|
||||
Routine updates to the core functionality.
|
||||
|
||||
## 2022-08-05 - 5.0.78 to 5.0.84 - Core updates
|
||||
Routine updates to the core functionality.
|
||||
|
||||
## 2022-03-22 - 5.0.75 to 5.0.77 - Core updates
|
||||
Routine updates to the core functionality.
|
||||
|
||||
## 2021-11-12 - 5.0.67 to 5.0.74 - Core updates
|
||||
Routine updates to the core functionality.
|
||||
|
||||
## 2021-10-22 - 5.0.61 to 5.0.66 - Core updates
|
||||
Routine updates to the core functionality.
|
||||
|
||||
## 2020-05-28 - 5.0.55 to 5.0.60 - Core updates
|
||||
Routine updates to the core functionality.
|
||||
|
||||
## 2019-11-19 - 5.0.50 to 5.0.54 - Core and Snyk fixes
|
||||
Core updates and restored Snyk to the latest version.
|
||||
|
||||
## 2016-08-31 - 4.3.2 to 4.3.5 - Core updates
|
||||
Routine updates to the core functionality.
|
||||
|
||||
## 2016-06-01 - 4.3.1 - Multiple enhancements
|
||||
Implemented various features and fixes in the project.
|
||||
|
||||
- Updated .gitlab-ci.yml multiple times
|
||||
- Added Python3 support
|
||||
- Added new features and fixed various issues
|
||||
|
||||
90
image_support_files/README.md
Normal file
90
image_support_files/README.md
Normal file
@@ -0,0 +1,90 @@
|
||||
# Image Support Files
|
||||
|
||||
This directory contains helper scripts that are copied into the Docker image during build to enable NVM functionality.
|
||||
|
||||
## Files
|
||||
|
||||
### `bash-with-nvm`
|
||||
|
||||
**Purpose**: Wrapper script for Dockerfile RUN commands
|
||||
|
||||
**Usage**: Set as SHELL directive in Dockerfile
|
||||
```dockerfile
|
||||
SHELL ["/usr/local/bin/bash-with-nvm"]
|
||||
```
|
||||
|
||||
**What it does**:
|
||||
- Sources nvm before executing each Dockerfile RUN command
|
||||
- Enables direct usage of `nvm` commands without manual sourcing
|
||||
- Example: `RUN nvm install 18` works without `bash -c "source ..."`
|
||||
|
||||
**Location in image**: `/usr/local/bin/bash-with-nvm`
|
||||
|
||||
**How it works**:
|
||||
1. Exports NVM_DIR environment variable
|
||||
2. Sources `$NVM_DIR/nvm.sh` to load nvm functions
|
||||
3. Executes the command passed to it via `eval "$@"`
|
||||
|
||||
---
|
||||
|
||||
### `docker-entrypoint.sh`
|
||||
|
||||
**Purpose**: ENTRYPOINT script for runtime nvm support
|
||||
|
||||
**Usage**: Set as ENTRYPOINT in Dockerfile
|
||||
```dockerfile
|
||||
ENTRYPOINT ["/usr/local/bin/docker-entrypoint.sh"]
|
||||
```
|
||||
|
||||
**What it does**:
|
||||
- Makes nvm available in `docker run ... bash -c` commands
|
||||
- Enables nvm in CI/CD workflow scripts
|
||||
- Passes through non-bash commands unchanged
|
||||
|
||||
**Location in image**: `/usr/local/bin/docker-entrypoint.sh`
|
||||
|
||||
**How it works**:
|
||||
1. Loads nvm in the entrypoint environment
|
||||
2. Detects if command is `bash -c ...`
|
||||
3. If yes: Injects `source /etc/bash.bashrc` before the user's command
|
||||
4. If no: Executes command as-is with `exec "$@"`
|
||||
|
||||
**Examples**:
|
||||
- `docker run image bash -c "nvm install 18"` → nvm is available
|
||||
- `docker run image node --version` → Passes through to node binary
|
||||
- CI/CD: `run: nvm install 19` → Works automatically
|
||||
|
||||
---
|
||||
|
||||
## Why These Scripts Are Needed
|
||||
|
||||
**The Problem**:
|
||||
- nvm is a bash function, not a binary executable
|
||||
- It must be sourced into each shell session
|
||||
- Docker RUN commands and `bash -c` don't automatically source it
|
||||
|
||||
**The Solution**:
|
||||
1. **bash-with-nvm**: Makes Dockerfile RUN commands work
|
||||
2. **docker-entrypoint.sh**: Makes runtime `bash -c` commands work
|
||||
3. **/etc/bash.bashrc** (configured in Dockerfile): Makes interactive shells work
|
||||
|
||||
Together, these provide seamless nvm access in all contexts.
|
||||
|
||||
---
|
||||
|
||||
## Maintenance
|
||||
|
||||
**Modifying the scripts**:
|
||||
1. Edit the file in this directory
|
||||
2. Rebuild the Docker image
|
||||
3. Test with both `docker build` and `docker run` scenarios
|
||||
|
||||
**Testing checklist**:
|
||||
- [ ] `RUN nvm install 18` works in Dockerfile
|
||||
- [ ] `docker run image bash -c "nvm install 18"` works
|
||||
- [ ] `docker run image node --version` still works (fallback)
|
||||
- [ ] CI/CD workflows can use nvm commands
|
||||
|
||||
**Debugging**:
|
||||
- View script in running container: `docker run image cat /usr/local/bin/bash-with-nvm`
|
||||
- Test entrypoint manually: `docker run --entrypoint /bin/bash image -c "nvm --version"`
|
||||
9
image_support_files/bash-with-nvm
Normal file
9
image_support_files/bash-with-nvm
Normal file
@@ -0,0 +1,9 @@
|
||||
#!/bin/bash
|
||||
set -e
|
||||
|
||||
# Load nvm before executing Dockerfile RUN commands
|
||||
export NVM_DIR="/usr/local/nvm"
|
||||
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
|
||||
|
||||
# Execute the command passed to this wrapper
|
||||
eval "$@"
|
||||
14
image_support_files/docker-entrypoint.sh
Normal file
14
image_support_files/docker-entrypoint.sh
Normal file
@@ -0,0 +1,14 @@
|
||||
#!/bin/bash
|
||||
set -e
|
||||
|
||||
# Load nvm in the entrypoint environment
|
||||
export NVM_DIR="/usr/local/nvm"
|
||||
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
|
||||
|
||||
# If command is bash -c, inject bashrc sourcing to make nvm available
|
||||
if [ "$1" = "bash" ] && [ "$2" = "-c" ]; then
|
||||
shift 2
|
||||
exec bash -c "source /etc/bash.bashrc && $*"
|
||||
else
|
||||
exec "$@"
|
||||
fi
|
||||
@@ -1,18 +1,41 @@
|
||||
{
|
||||
"gitzone": {
|
||||
"module": {
|
||||
"githost": "gitlab.com",
|
||||
"githost": "code.foss.global",
|
||||
"gitscope": "hosttoday",
|
||||
"gitrepo": "ht-docker-node",
|
||||
"shortDescription": "docker image with nodejs and shipzone.io support",
|
||||
"npmPackagename": "@hosttoday/ht-docker-node",
|
||||
"license": "MIT"
|
||||
"license": "MIT",
|
||||
"description": "A Docker image that integrates Node.js with shipzone.io support.",
|
||||
"keywords": [
|
||||
"Docker",
|
||||
"Node.js",
|
||||
"shipzone.io",
|
||||
"npm",
|
||||
"CI",
|
||||
"git",
|
||||
"ssh",
|
||||
"szci",
|
||||
"node version management",
|
||||
"typescript"
|
||||
]
|
||||
}
|
||||
},
|
||||
"npmci": {
|
||||
"dockerRegistries": [
|
||||
"docker.io",
|
||||
"registry.gitlab.com"
|
||||
]
|
||||
"szci": {
|
||||
"dockerRegistries": []
|
||||
},
|
||||
"@git.zone/tsdocker": {
|
||||
"registries": [
|
||||
"code.foss.global"
|
||||
],
|
||||
"registryRepoMap": {
|
||||
"code.foss.global": "host.today/ht-docker-node"
|
||||
},
|
||||
"platforms": ["linux/amd64", "linux/arm64"],
|
||||
"testDir": "./test"
|
||||
},
|
||||
"tsdoc": {
|
||||
"legal": "\n## License and Legal Information\n\nThis repository contains open-source code that is licensed under the MIT License. A copy of the MIT License can be found in the [license](license) file within this repository. \n\n**Please note:** The MIT License does not grant permission to use the trade names, trademarks, service marks, or product names of the project, except as required for reasonable and customary use in describing the origin of the work and reproducing the content of the NOTICE file.\n\n### Trademarks\n\nThis project is owned and maintained by Task Venture Capital GmbH. The names and logos associated with Task Venture Capital GmbH and any related products or services are trademarks of Task Venture Capital GmbH and are not included within the scope of the MIT license granted herein. Use of these trademarks must comply with Task Venture Capital GmbH's Trademark Guidelines, and any usage must be approved in writing by Task Venture Capital GmbH.\n\n### Company Information\n\nTask Venture Capital GmbH \nRegistered at District court Bremen HRB 35230 HB, Germany\n\nFor any legal inquiries or if you require further information, please contact us via email at hello@task.vc.\n\nBy using this repository, you acknowledge that you have read this section, agree to comply with its terms, and understand that the licensing of the code does not imply endorsement by Task Venture Capital GmbH of any derivative works.\n"
|
||||
}
|
||||
}
|
||||
5
package-lock.json
generated
5
package-lock.json
generated
@@ -1,5 +0,0 @@
|
||||
{
|
||||
"name": "ht-docker-node",
|
||||
"version": "5.0.81",
|
||||
"lockfileVersion": 1
|
||||
}
|
||||
35
package.json
35
package.json
@@ -1,35 +1,40 @@
|
||||
{
|
||||
"name": "ht-docker-node",
|
||||
"version": "5.0.81",
|
||||
"description": "docker image with nodejs and shipzone.io support",
|
||||
"version": "5.7.0",
|
||||
"description": "A Docker image that integrates Node.js with shipzone.io support.",
|
||||
"main": "index.js",
|
||||
"scripts": {
|
||||
"test": "echo \"no npm test specified\"",
|
||||
"build": "echo \"Not needed for now\""
|
||||
"build": "tsdocker build",
|
||||
"release": "tsdocker push"
|
||||
},
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "git+https://github.com/HostToday/ht-docker-node.git"
|
||||
},
|
||||
"author": "Lossless GmbH",
|
||||
"author": "Task Venture Capital GmbH",
|
||||
"license": "MIT",
|
||||
"bugs": {
|
||||
"url": "https://github.com/HostToday/ht-docker-node/issues"
|
||||
},
|
||||
"homepage": "https://github.com/HostToday/ht-docker-node#readme",
|
||||
"private": true,
|
||||
"files": [
|
||||
"ts/*",
|
||||
"ts_web/*",
|
||||
"dist/*",
|
||||
"dist_web/*",
|
||||
"dist_ts_web/*",
|
||||
"assets/*",
|
||||
"cli.js",
|
||||
"npmextra.json",
|
||||
"readme.md"
|
||||
],
|
||||
"directories": {
|
||||
"test": "test"
|
||||
},
|
||||
"keywords": [
|
||||
"Docker",
|
||||
"Node.js",
|
||||
"shipzone.io",
|
||||
"npm",
|
||||
"CI",
|
||||
"git",
|
||||
"ssh",
|
||||
"szci",
|
||||
"node version management",
|
||||
"typescript"
|
||||
],
|
||||
"devDependencies": {
|
||||
"@git.zone/tsdocker": "^1.17.4"
|
||||
}
|
||||
}
|
||||
|
||||
3184
pnpm-lock.yaml
generated
Normal file
3184
pnpm-lock.yaml
generated
Normal file
File diff suppressed because it is too large
Load Diff
97
readme.hints.md
Normal file
97
readme.hints.md
Normal file
@@ -0,0 +1,97 @@
|
||||
# Technical Implementation Notes
|
||||
|
||||
## NVM Support (v5.2.0)
|
||||
|
||||
### How NVM Works in This Image
|
||||
|
||||
The image provides full nvm support in three contexts:
|
||||
|
||||
1. **Dockerfile RUN commands**: Via `/usr/local/bin/bash-with-nvm` wrapper
|
||||
2. **CI/CD workflow scripts**: Via /etc/bash.bashrc prepended configuration
|
||||
3. **Interactive shells**: Via /etc/bash.bashrc standard loading
|
||||
|
||||
### Key Components
|
||||
|
||||
#### 1. /etc/bash.bashrc (Prepended NVM Init)
|
||||
- NVM initialization is **prepended** to /etc/bash.bashrc
|
||||
- **Critical**: Placed BEFORE the `[ -z "$PS1" ] && return` line
|
||||
- This ensures nvm loads in both interactive AND non-interactive bash shells
|
||||
- Location: Lines 1-3 of /etc/bash.bashrc
|
||||
|
||||
#### 2. /usr/local/bin/bash-with-nvm (Build-Time Wrapper)
|
||||
- Wrapper script that sources nvm before executing Dockerfile RUN commands
|
||||
- Used via `SHELL ["/usr/local/bin/bash-with-nvm"]` directive
|
||||
- Ensures nvm is available during `docker build` without manual sourcing
|
||||
|
||||
#### 3. /usr/local/bin/docker-entrypoint.sh (Runtime Wrapper)
|
||||
- ENTRYPOINT that detects `bash -c` commands
|
||||
- Automatically injects `source /etc/bash.bashrc` for bash -c invocations
|
||||
- Passes through other commands unchanged
|
||||
- Critical for CI/CD workflow support
|
||||
|
||||
#### 4. ENV PATH Fallback
|
||||
- Maintains `ENV PATH` pointing to default Node v24.13.0
|
||||
- Ensures non-bash shells (sh, dash) still have node access
|
||||
- Backward compatible with existing usage
|
||||
|
||||
### Why This Approach Works
|
||||
|
||||
**Problem**: nvm is a shell function, not a binary
|
||||
- Can't be found in PATH
|
||||
- Must be sourced into each shell session
|
||||
- Docker's /bin/sh doesn't support bash functions
|
||||
|
||||
**Solution Strategy**:
|
||||
1. Prepend nvm init to /etc/bash.bashrc (before early return)
|
||||
2. Use wrapper for build-time (SHELL directive)
|
||||
3. Use ENTRYPOINT for runtime (docker run / CI/CD)
|
||||
4. Keep ENV PATH for fallback
|
||||
|
||||
### Version Persistence Limitation
|
||||
|
||||
Each Dockerfile RUN command creates a new shell:
|
||||
|
||||
```dockerfile
|
||||
RUN nvm install 18 # Installs but doesn't persist
|
||||
RUN node --version # Shows v20.12.2 (ENV PATH)
|
||||
```
|
||||
|
||||
**Workaround**: Chain commands or set default:
|
||||
|
||||
```dockerfile
|
||||
RUN nvm install 18 && nvm alias default 18
|
||||
RUN node --version # Now shows v18.x.x
|
||||
```
|
||||
|
||||
### Testing Performed
|
||||
|
||||
- ✅ Dockerfile RUN: `nvm install`, `nvm use`, version switching
|
||||
- ✅ Runtime bash -c: All nvm commands work
|
||||
- ✅ CI/CD workflows: Tested in .gitea/workflows context
|
||||
- ✅ Backward compat: pnpm, szci, ENV PATH fallback
|
||||
- ✅ Multi-stage builds: nvm available in all stages
|
||||
- ✅ Interactive shells: Full nvm access
|
||||
|
||||
### Maintenance Notes
|
||||
|
||||
**If updating nvm version**: Modify line 87 in Dockerfile (currently NVM v0.40.1)
|
||||
|
||||
**If base image changes**: Verify /etc/bash.bashrc structure still has early return pattern
|
||||
|
||||
## Ubuntu 24.04 Upgrade Notes
|
||||
|
||||
- Base image upgraded from Ubuntu 20.04 to 24.04
|
||||
- Python 2 removed (EOL since 2020), Python 3 retained
|
||||
- Package changes for 24.04 compatibility:
|
||||
- `gconf-service` and `libgconf-2-4` removed (deprecated GConf)
|
||||
- `libgcc1` replaced with `libgcc-s1`
|
||||
- `libappindicator1` replaced with `libayatana-appindicator3-1`
|
||||
- `libasound2` replaced with `libasound2t64` (t64 transition)
|
||||
- `libgbm1` and `libatk-bridge2.0-0` added for Chrome/Puppeteer
|
||||
- MongoDB upgraded from 4.4 to 8.0 (uses modern gpg keyring approach instead of deprecated apt-key)
|
||||
- Node.js upgraded to v24.13.0 LTS (Krypton, supported until April 2028)
|
||||
|
||||
**If ENTRYPOINT conflicts**: Users can override with `--entrypoint` flag:
|
||||
```bash
|
||||
docker run --entrypoint /bin/bash image -c "commands"
|
||||
```
|
||||
433
readme.md
433
readme.md
@@ -1,59 +1,408 @@
|
||||
# @hosttoday/ht-docker-node
|
||||
docker image with nodejs and [ship.zone](https://ship.zone) support
|
||||
# 🐳 ht-docker-node
|
||||
|
||||
## Availabililty and Links
|
||||
* [npmjs.org (npm package)](https://www.npmjs.com/package/@hosttoday/ht-docker-node)
|
||||
* [gitlab.com (source)](https://gitlab.com/hosttoday/ht-docker-node)
|
||||
* [github.com (source mirror)](https://github.com/hosttoday/ht-docker-node)
|
||||
* [docs (typedoc)](https://hosttoday.gitlab.io/ht-docker-node/)
|
||||
> Production-ready Docker images for Node.js with NVM built in, multi-arch support, and modern runtimes (Bun, Deno). Every image ships with **tini** as PID 1 and full **NVM** integration — switch Node versions on the fly, no sourcing required.
|
||||
|
||||
## Status for master
|
||||
[](https://gitlab.com/hosttoday/ht-docker-node/commits/master)
|
||||
[](https://gitlab.com/hosttoday/ht-docker-node/commits/master)
|
||||
[](https://www.npmjs.com/package/@hosttoday/ht-docker-node)
|
||||
[](https://snyk.io/test/npm/@hosttoday/ht-docker-node)
|
||||
[](https://nodejs.org/dist/latest-v10.x/docs/api/)
|
||||
[](https://nodejs.org/dist/latest-v10.x/docs/api/)
|
||||
[](https://prettier.io/)
|
||||
**Multi-arch** • **Alpine & Ubuntu** • **NVM built-in** • **Bun, Deno & pnpm** • **tini init** • **CI/CD optimized**
|
||||
|
||||
## Usage
|
||||
## Issue Reporting and Security
|
||||
|
||||
The purpose of this Docker image is to provide a robust base for node apps and CI.
|
||||
It comes in different flavours and all of them have node, npm, git and ssh in PATH.
|
||||
For reporting bugs, issues, or security vulnerabilities, please visit [community.foss.global/](https://community.foss.global/). This is the central community hub for all issue reporting. Developers who sign and comply with our contribution agreement and go through identification can also get a [code.foss.global/](https://code.foss.global/) account to submit Pull Requests directly.
|
||||
|
||||
The **:npmci flavour** has npmci in path and can install any required node version and update PATH accordingly:
|
||||
---
|
||||
|
||||
```Dockerfile
|
||||
FROM hosttoday/ht-docker-node:npmci
|
||||
RUN npmci install [node_version_number] // this installs node using node and sets the default to the new node and npm versions
|
||||
## 🚀 Quick Start
|
||||
|
||||
```bash
|
||||
# Pull and run the full-featured Ubuntu image
|
||||
docker pull code.foss.global/host.today/ht-docker-node:latest
|
||||
docker run -it code.foss.global/host.today/ht-docker-node:latest
|
||||
|
||||
# Or go lean with Alpine (~200 MB vs ~900 MB)
|
||||
docker pull code.foss.global/host.today/ht-docker-node:alpine-node
|
||||
docker run -it code.foss.global/host.today/ht-docker-node:alpine-node
|
||||
```
|
||||
|
||||
## Availability
|
||||
NVM is ready the moment you enter the container — no manual sourcing, no `.bashrc` hacks:
|
||||
|
||||
| Registry | Image Path |
|
||||
| --------------- | -------------------------------------------- |
|
||||
| GitLab Registry | registry.gitlab.com/hosttoday/ht-docker-node |
|
||||
| Docker Hub | hosttoday/ht-docker-node |
|
||||
```bash
|
||||
$ nvm install 22
|
||||
$ nvm use 22
|
||||
$ node -v # v22.x.x ✅
|
||||
```
|
||||
|
||||
## Flavour Overview
|
||||
---
|
||||
|
||||
- **:lts** - node lts version, equals :latest
|
||||
- **:stable** - node stable version
|
||||
- **:npmci** - npmci preinstalled
|
||||
- **:npmts** - npmci + npmts preinstalled
|
||||
- **:npmpage** - npmci + npmts + npmpage preinstalled
|
||||
- **:mongo** - npmci + npmts + mongo
|
||||
## 📦 Available Images
|
||||
|
||||
For further information read the linked docs at the top of this README.
|
||||
### Ubuntu-Based (Full-Featured)
|
||||
|
||||
> MIT licensed | **©** [Lossless GmbH](https://lossless.gmbh)
|
||||
> | By using this npm module you agree to our [privacy policy](https://lossless.gmbH/privacy.html)
|
||||
Built on **Ubuntu 24.04**. Maximum compatibility, all build tools included, plus Chromium for Puppeteer/Playwright, and MongoDB 8.0.
|
||||
|
||||
[](https://host.today)
|
||||
| Tag | Description | Key Contents |
|
||||
|-----|-------------|--------------|
|
||||
| `:latest` | Kitchen-sink Node.js image | Node LTS + NVM + pnpm + Bun + Deno + Chromium + MongoDB 8.0 |
|
||||
| `:lts` | Alias of `:latest` | Same — explicit LTS naming for clarity |
|
||||
| `:szci` | CI/CD workhorse | `:latest` + `@ship.zone/szci` preinstalled |
|
||||
| `:fossglobal_preinstalled_<ver>` | Preloaded tooling image | `:szci` + tsrun, tstest, tapbundle, smartfile, and more |
|
||||
|
||||
For further information read the linked docs at the top of this readme.
|
||||
### Alpine-Based (Lightweight & Multi-Arch) ⚡
|
||||
|
||||
> MIT licensed | **©** [Lossless GmbH](https://lossless.gmbh)
|
||||
| By using this npm module you agree to our [privacy policy](https://lossless.gmbH/privacy)
|
||||
**40–75 % smaller** than Ubuntu. Native performance on **both amd64 and arm64** (Apple Silicon, Graviton, Ampere).
|
||||
|
||||
[](https://maintainedby.lossless.com)
|
||||
| Tag | Description | Size | Architectures |
|
||||
|-----|-------------|------|---------------|
|
||||
| `:alpine-node` | Node.js LTS + NVM + pnpm | ~200 MB | amd64, arm64 |
|
||||
| `:alpine-bun` | Node.js LTS + NVM + Bun | ~150 MB | amd64, arm64 |
|
||||
| `:alpine-deno` | Node.js LTS + NVM + Deno | ~180 MB | amd64, arm64 |
|
||||
| `:alpine-szci` | Alpine Node + szci + build tools | ~250 MB | amd64, arm64 |
|
||||
|
||||
> 💡 Docker automatically pulls the right arch for your platform. Build on a Mac, deploy on an ARM server — same tag, native speed everywhere.
|
||||
|
||||
> **Note:** The Deno Alpine image uses `alpine:edge` to get the official musl-compiled Deno from the community repository.
|
||||
|
||||
### What every image includes
|
||||
|
||||
| Feature | Detail |
|
||||
|---------|--------|
|
||||
| **tini** | PID 1 init — proper signal forwarding & zombie reaping |
|
||||
| **NVM** | v0.40.1 — works in `RUN`, `docker exec`, CI scripts, interactive shells |
|
||||
| **Node.js** | LTS v24.13.0 (default, switchable) |
|
||||
| **docker-entrypoint.sh** | Loads NVM at runtime so `docker run … bash -c "nvm use 22"` just works |
|
||||
|
||||
---
|
||||
|
||||
## 💡 Key Features
|
||||
|
||||
### 🔄 NVM — Zero-Config Node Version Management
|
||||
|
||||
NVM is pre-wired into every shell context. No manual sourcing required in any of these scenarios:
|
||||
|
||||
**Dockerfile RUN commands** (via the `bash-with-nvm` SHELL wrapper):
|
||||
|
||||
```dockerfile
|
||||
FROM code.foss.global/host.today/ht-docker-node:latest
|
||||
|
||||
# Works directly — no sourcing needed!
|
||||
RUN nvm install 22 && nvm use 22 && npm ci
|
||||
RUN nvm alias default 22 # persists for later RUN steps
|
||||
```
|
||||
|
||||
**CI/CD scripts** (via `BASH_ENV=/etc/bash.bashrc`):
|
||||
|
||||
```yaml
|
||||
# Gitea / GitLab CI
|
||||
test:
|
||||
image: code.foss.global/host.today/ht-docker-node:latest
|
||||
script:
|
||||
- nvm install 22 && nvm use 22
|
||||
- pnpm ci && pnpm test
|
||||
```
|
||||
|
||||
**Interactive shells** and **`docker exec`**:
|
||||
|
||||
```bash
|
||||
docker exec -it mycontainer bash
|
||||
$ nvm ls # lists installed versions
|
||||
$ nvm install 20 # installs Node 20
|
||||
$ nvm use 20 # switches immediately
|
||||
```
|
||||
|
||||
> ⚠️ **Note on version persistence across RUN steps:** Each Dockerfile `RUN` starts a new shell. Use `nvm alias default <version>` to persist your choice, or chain commands in a single `RUN`.
|
||||
|
||||
### 🛡️ tini — Proper Init for Containers
|
||||
|
||||
All images use [tini](https://github.com/krallin/tini) as PID 1:
|
||||
|
||||
```
|
||||
tini → docker-entrypoint.sh → your command
|
||||
```
|
||||
|
||||
This means:
|
||||
- ✅ Signals (SIGTERM, SIGINT) are forwarded correctly to your app
|
||||
- ✅ Zombie processes are reaped automatically
|
||||
- ✅ Clean container shutdown — no orphaned processes
|
||||
|
||||
### 🌐 Chromium (Ubuntu `:latest` only)
|
||||
|
||||
Puppeteer and Playwright work out of the box:
|
||||
|
||||
```javascript
|
||||
const browser = await puppeteer.launch(); // uses /usr/bin/chromium-browser
|
||||
```
|
||||
|
||||
Environment variables `PUPPETEER_EXECUTABLE_PATH` and `CHROME_BIN` are pre-set. Multi-arch compatible (amd64 + arm64).
|
||||
|
||||
### 🏔️ Alpine — Production Optimized
|
||||
|
||||
```dockerfile
|
||||
FROM code.foss.global/host.today/ht-docker-node:alpine-node
|
||||
|
||||
RUN nvm install 22 && nvm use 22
|
||||
RUN pnpm install && pnpm build
|
||||
# Result: ~200 MB image
|
||||
```
|
||||
|
||||
Why Alpine?
|
||||
- ✅ **60–75 % smaller** → Faster pulls, faster deploys
|
||||
- ✅ **Reduced attack surface** → Fewer packages = fewer CVEs
|
||||
- ✅ **Native musl builds** → No glibc compatibility layer
|
||||
- ✅ **Multi-arch** → Same tag works on x64 and ARM64
|
||||
|
||||
---
|
||||
|
||||
## 🛠️ Usage Examples
|
||||
|
||||
### Basic Node.js App
|
||||
|
||||
```dockerfile
|
||||
FROM code.foss.global/host.today/ht-docker-node:alpine-node
|
||||
|
||||
WORKDIR /app
|
||||
COPY package*.json ./
|
||||
RUN pnpm install
|
||||
|
||||
COPY . .
|
||||
RUN pnpm build
|
||||
|
||||
EXPOSE 3000
|
||||
CMD ["node", "dist/index.js"]
|
||||
```
|
||||
|
||||
### Multi-Version Testing
|
||||
|
||||
```dockerfile
|
||||
FROM code.foss.global/host.today/ht-docker-node:latest
|
||||
|
||||
WORKDIR /app
|
||||
COPY package*.json ./
|
||||
|
||||
RUN nvm install 20 && nvm use 20 && npm ci && npm test
|
||||
RUN nvm install 22 && nvm use 22 && npm ci && npm test
|
||||
|
||||
# Ship with Node 22
|
||||
RUN nvm alias default 22 && npm run build
|
||||
```
|
||||
|
||||
### Deno Application
|
||||
|
||||
```dockerfile
|
||||
FROM code.foss.global/host.today/ht-docker-node:alpine-deno
|
||||
|
||||
WORKDIR /app
|
||||
COPY . .
|
||||
|
||||
# Deno and Node.js are both available
|
||||
CMD ["deno", "run", "--allow-net", "main.ts"]
|
||||
```
|
||||
|
||||
### Bun for Ultra-Fast Installs
|
||||
|
||||
```dockerfile
|
||||
FROM code.foss.global/host.today/ht-docker-node:alpine-bun
|
||||
|
||||
WORKDIR /app
|
||||
COPY package.json bun.lockb ./
|
||||
RUN bun install
|
||||
|
||||
COPY . .
|
||||
RUN bun run build
|
||||
CMD ["bun", "run", "start"]
|
||||
```
|
||||
|
||||
### TypeScript Multi-Stage Build
|
||||
|
||||
```dockerfile
|
||||
# Build stage
|
||||
FROM code.foss.global/host.today/ht-docker-node:alpine-node AS builder
|
||||
WORKDIR /app
|
||||
COPY package*.json ./
|
||||
RUN pnpm install
|
||||
COPY tsconfig.json ./
|
||||
COPY src ./src
|
||||
RUN pnpm build
|
||||
|
||||
# Production stage — only runtime deps
|
||||
FROM code.foss.global/host.today/ht-docker-node:alpine-node
|
||||
WORKDIR /app
|
||||
COPY package*.json ./
|
||||
RUN pnpm install --prod
|
||||
COPY --from=builder /app/dist ./dist
|
||||
EXPOSE 3000
|
||||
CMD ["node", "dist/index.js"]
|
||||
```
|
||||
|
||||
### Production-Hardened Setup
|
||||
|
||||
```dockerfile
|
||||
FROM code.foss.global/host.today/ht-docker-node:alpine-node
|
||||
|
||||
# Non-root user
|
||||
RUN addgroup -g 1001 -S nodejs && adduser -S nodejs -u 1001
|
||||
|
||||
WORKDIR /app
|
||||
COPY package*.json ./
|
||||
RUN pnpm install --frozen-lockfile && pnpm cache clean
|
||||
|
||||
COPY --chown=nodejs:nodejs . .
|
||||
RUN pnpm build
|
||||
|
||||
USER nodejs
|
||||
EXPOSE 3000
|
||||
CMD ["node", "dist/index.js"]
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🔧 NVM Cheat Sheet
|
||||
|
||||
```bash
|
||||
# Install a specific version
|
||||
nvm install 22.5.0
|
||||
|
||||
# Use a version (current shell)
|
||||
nvm use 22
|
||||
|
||||
# Set default (persists across shells / RUN steps)
|
||||
nvm alias default 22
|
||||
|
||||
# Install and switch to latest LTS
|
||||
nvm install --lts && nvm use --lts
|
||||
|
||||
# List installed versions
|
||||
nvm ls
|
||||
|
||||
# Chain in a single Dockerfile RUN
|
||||
RUN nvm install 22 && nvm use 22 && npm ci && npm test
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🏗️ Building the Images
|
||||
|
||||
This project uses [@git.zone/tsdocker](https://code.foss.global/git.zone/tsdocker) for Docker image management.
|
||||
|
||||
```bash
|
||||
# Install tsdocker
|
||||
pnpm install -g @git.zone/tsdocker@latest
|
||||
|
||||
# Discover all Dockerfiles and their tags
|
||||
tsdocker list
|
||||
|
||||
# Build all images (multi-arch: amd64 + arm64)
|
||||
tsdocker build
|
||||
|
||||
# Run all test scripts
|
||||
tsdocker test
|
||||
|
||||
# Push to a specific registry
|
||||
tsdocker push code.foss.global
|
||||
```
|
||||
|
||||
### Manual Build (single image)
|
||||
|
||||
```bash
|
||||
docker buildx build \
|
||||
--platform linux/amd64,linux/arm64 \
|
||||
-f Dockerfile_alpine-node \
|
||||
-t your-registry/your-image:alpine-node \
|
||||
--push .
|
||||
```
|
||||
|
||||
### Image Dependency Chain
|
||||
|
||||
Some images depend on others being in the registry first:
|
||||
|
||||
```
|
||||
Dockerfile (:latest) ──► Dockerfile_lts (:lts)
|
||||
──► Dockerfile_szci (:szci)
|
||||
──► Dockerfile_fossglobal_preinstalled_* (:fossglobal_preinstalled_<ver>)
|
||||
|
||||
Dockerfile_alpine-node (:alpine-node)
|
||||
──► Dockerfile_alpine-szci (:alpine-szci)
|
||||
```
|
||||
|
||||
The standalone Alpine images (`:alpine-bun`, `:alpine-deno`) have no registry dependencies.
|
||||
|
||||
---
|
||||
|
||||
## 📊 Image Comparison
|
||||
|
||||
| Feature | Ubuntu `:latest` | Alpine `:alpine-node` |
|
||||
|---------|------------------|----------------------|
|
||||
| Base Size | ~900 MB | ~200 MB |
|
||||
| Build Tools | ✅ Full (gcc, g++, make, python3) | ⚠️ Install separately (`apk add build-base`) |
|
||||
| Chromium | ✅ Pre-installed | ❌ |
|
||||
| MongoDB | ✅ 8.0 | ❌ |
|
||||
| Runtimes | Node + Bun + Deno + pnpm | Node + pnpm |
|
||||
| Compatibility | ✅ Maximum (glibc) | ✅ Good (musl) |
|
||||
| Multi-arch | ✅ amd64, arm64 | ✅ amd64, arm64 |
|
||||
| tini init | ✅ | ✅ |
|
||||
| Best for | Complex builds, E2E tests, full-stack dev | Production, CI/CD, microservices |
|
||||
|
||||
---
|
||||
|
||||
## 🐛 Troubleshooting
|
||||
|
||||
### NVM command not found
|
||||
|
||||
Shouldn't happen in our images, but if it does:
|
||||
|
||||
```bash
|
||||
export NVM_DIR="/usr/local/nvm"
|
||||
[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh"
|
||||
```
|
||||
|
||||
### Alpine native module build failures
|
||||
|
||||
Some npm packages require native build tools:
|
||||
|
||||
```dockerfile
|
||||
FROM code.foss.global/host.today/ht-docker-node:alpine-node
|
||||
RUN apk add --no-cache python3 make g++
|
||||
RUN pnpm install
|
||||
```
|
||||
|
||||
Or use `:alpine-szci` which ships with build tools pre-installed.
|
||||
|
||||
### Version not persisting across RUN steps
|
||||
|
||||
Each Dockerfile `RUN` creates a new shell. Use `nvm alias default`:
|
||||
|
||||
```dockerfile
|
||||
RUN nvm install 22 && nvm alias default 22
|
||||
RUN node -v # ✅ v22.x.x
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🔗 Links
|
||||
|
||||
- **Source Code:** [code.foss.global/host.today/ht-docker-node](https://code.foss.global/host.today/ht-docker-node)
|
||||
- **NVM:** [github.com/nvm-sh/nvm](https://github.com/nvm-sh/nvm)
|
||||
- **tini:** [github.com/krallin/tini](https://github.com/krallin/tini)
|
||||
- **tsdocker:** [code.foss.global/git.zone/tsdocker](https://code.foss.global/git.zone/tsdocker)
|
||||
- **Alpine Linux:** [alpinelinux.org](https://alpinelinux.org/)
|
||||
- **Node.js Unofficial Builds:** [unofficial-builds.nodejs.org](https://unofficial-builds.nodejs.org/) (musl support)
|
||||
|
||||
---
|
||||
|
||||
## License and Legal Information
|
||||
|
||||
This repository contains open-source code licensed under the MIT License. A copy of the license can be found in the [LICENSE](./LICENSE) file.
|
||||
|
||||
**Please note:** The MIT License does not grant permission to use the trade names, trademarks, service marks, or product names of the project, except as required for reasonable and customary use in describing the origin of the work and reproducing the content of the NOTICE file.
|
||||
|
||||
### Trademarks
|
||||
|
||||
This project is owned and maintained by Task Venture Capital GmbH. The names and logos associated with Task Venture Capital GmbH and any related products or services are trademarks of Task Venture Capital GmbH or third parties, and are not included within the scope of the MIT license granted herein.
|
||||
|
||||
Use of these trademarks must comply with Task Venture Capital GmbH's Trademark Guidelines or the guidelines of the respective third-party owners, and any usage must be approved in writing. Third-party trademarks used herein are the property of their respective owners and used only in a descriptive manner, e.g. for an implementation of an API or similar.
|
||||
|
||||
### Company Information
|
||||
|
||||
Task Venture Capital GmbH
|
||||
Registered at District Court Bremen HRB 35230 HB, Germany
|
||||
|
||||
For any legal inquiries or further information, please contact us via email at hello@task.vc.
|
||||
|
||||
By using this repository, you acknowledge that you have read this section, agree to comply with its terms, and understand that the licensing of the code does not imply endorsement by Task Venture Capital GmbH of any derivative works.
|
||||
|
||||
18
test/test_alpine-bun.sh
Executable file
18
test/test_alpine-bun.sh
Executable file
@@ -0,0 +1,18 @@
|
||||
#!/bin/bash
|
||||
set -e
|
||||
|
||||
echo "Testing alpine-bun image..."
|
||||
|
||||
# Test NVM
|
||||
echo "Testing NVM..."
|
||||
nvm --version
|
||||
|
||||
# Test Node.js
|
||||
echo "Testing Node.js..."
|
||||
node --version
|
||||
|
||||
# Test Bun
|
||||
echo "Testing Bun..."
|
||||
bun --version
|
||||
|
||||
echo "alpine-bun tests passed!"
|
||||
18
test/test_alpine-deno.sh
Executable file
18
test/test_alpine-deno.sh
Executable file
@@ -0,0 +1,18 @@
|
||||
#!/bin/bash
|
||||
set -e
|
||||
|
||||
echo "Testing alpine-deno image..."
|
||||
|
||||
# Test NVM
|
||||
echo "Testing NVM..."
|
||||
nvm --version
|
||||
|
||||
# Test Node.js
|
||||
echo "Testing Node.js..."
|
||||
node --version
|
||||
|
||||
# Test Deno
|
||||
echo "Testing Deno..."
|
||||
deno --version
|
||||
|
||||
echo "alpine-deno tests passed!"
|
||||
24
test/test_alpine-node.sh
Executable file
24
test/test_alpine-node.sh
Executable file
@@ -0,0 +1,24 @@
|
||||
#!/bin/bash
|
||||
set -e
|
||||
|
||||
echo "Testing alpine-node image..."
|
||||
|
||||
# Test NVM
|
||||
echo "Testing NVM..."
|
||||
nvm --version
|
||||
|
||||
# Test Node.js
|
||||
echo "Testing Node.js..."
|
||||
node --version
|
||||
|
||||
# Test pnpm
|
||||
echo "Testing pnpm..."
|
||||
pnpm --version
|
||||
|
||||
# Test NVM version switching
|
||||
echo "Testing NVM version switching..."
|
||||
nvm install 18
|
||||
nvm use 18
|
||||
node --version | grep v18
|
||||
|
||||
echo "alpine-node tests passed!"
|
||||
@@ -1 +1,32 @@
|
||||
echo "this runs within latest container!";
|
||||
#!/bin/bash
|
||||
set -e
|
||||
|
||||
echo "Testing latest image..."
|
||||
|
||||
# Test NVM
|
||||
echo "Testing NVM..."
|
||||
nvm --version
|
||||
|
||||
# Test Node.js
|
||||
echo "Testing Node.js..."
|
||||
node --version
|
||||
|
||||
# Test pnpm
|
||||
echo "Testing pnpm..."
|
||||
pnpm --version
|
||||
|
||||
# Test Bun
|
||||
echo "Testing Bun..."
|
||||
bun --version
|
||||
|
||||
# Test Deno
|
||||
echo "Testing Deno..."
|
||||
deno --version
|
||||
|
||||
# Test NVM version switching
|
||||
echo "Testing NVM version switching..."
|
||||
nvm install 22
|
||||
nvm use 22
|
||||
node --version | grep v22
|
||||
|
||||
echo "latest tests passed!"
|
||||
|
||||
@@ -1,10 +0,0 @@
|
||||
# check if npmci is available
|
||||
npm init -y
|
||||
npmci -v
|
||||
|
||||
# TODO update npmci to not require package.json
|
||||
npmci node install stable
|
||||
|
||||
# check if npm picks it up
|
||||
npmci command npm install -g @gitzone/tsrun
|
||||
npmci command tsrun -v
|
||||
@@ -1,5 +1,8 @@
|
||||
#!/bin/bash
|
||||
set -e
|
||||
|
||||
# npm
|
||||
npm -v
|
||||
node -v
|
||||
npm install -g @gitzone/tsrun
|
||||
# tsrun -v
|
||||
pnpm install -g @gitzone/tsrun
|
||||
tsrun -v
|
||||
13
test/test_szci.sh
Normal file
13
test/test_szci.sh
Normal file
@@ -0,0 +1,13 @@
|
||||
#!/bin/bash
|
||||
set -e
|
||||
|
||||
# check if szci is available
|
||||
npm init -y
|
||||
szci -v
|
||||
|
||||
# TODO update szci to not require package.json
|
||||
szci node install stable
|
||||
|
||||
# check if npm picks it up
|
||||
szci command pnpm install -g @gitzone/tsrun
|
||||
szci command tsrun -v
|
||||
17
tslint.json
17
tslint.json
@@ -1,17 +0,0 @@
|
||||
{
|
||||
"extends": ["tslint:latest", "tslint-config-prettier"],
|
||||
"rules": {
|
||||
"semicolon": [true, "always"],
|
||||
"no-console": false,
|
||||
"ordered-imports": false,
|
||||
"object-literal-sort-keys": false,
|
||||
"member-ordering": {
|
||||
"options":{
|
||||
"order": [
|
||||
"static-method"
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"defaultSeverity": "warning"
|
||||
}
|
||||
Reference in New Issue
Block a user