2026-02-07 12:57:35 +00:00
|
|
|
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 \
|
2026-02-07 13:04:19 +00:00
|
|
|
&& pnpm config set unsafe-perm true \
|
|
|
|
|
&& pnpm install -g @ship.zone/szci
|
2026-02-07 12:57:35 +00:00
|
|
|
|
|
|
|
|
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"]
|