Files
ht-docker-node/Dockerfile_alpine-node
Juergen Kunz e1ad8c2d83 feat(core): Modernize Ubuntu base, NVM, Node.js, and MongoDB
Ubuntu 24.04 upgrade:
- Upgrade base from ubuntu:20.04 to ubuntu:24.04
- Remove Python 2 (EOL since 2020), keep Python 3
- Replace deprecated packages for 24.04 compatibility:
  gconf-service/libgconf-2-4 removed, libgcc1 → libgcc-s1,
  libappindicator1 → libayatana-appindicator3-1,
  libasound2 → libasound2t64
- Add libgbm1 and libatk-bridge2.0-0 for Chrome/Puppeteer

NVM & Node.js:
- Upgrade NVM from v0.33.8 to v0.40.1
- Upgrade Node.js from v20.x to v24.13.0 LTS across all images

MongoDB:
- Upgrade from 4.4 to 8.0
- Use modern gpg keyring approach instead of deprecated apt-key
- Update repository from bionic to noble
2026-02-06 08:44:56 +00:00

68 lines
2.1 KiB
Plaintext

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++
# Install NVM (latest version for better Alpine/musl support)
RUN mkdir -p $NVM_DIR && curl 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
RUN 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/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 ["/usr/local/bin/docker-entrypoint.sh"]
CMD ["bash"]