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
This commit is contained in:
28
Dockerfile
28
Dockerfile
@@ -1,9 +1,9 @@
|
|||||||
FROM ubuntu:20.04
|
FROM ubuntu:24.04
|
||||||
LABEL author="Task Venture Capital GmbH <hello@task.vc>"
|
LABEL author="Task Venture Capital GmbH <hello@task.vc>"
|
||||||
|
|
||||||
WORKDIR /workspace
|
WORKDIR /workspace
|
||||||
# important environment variables
|
# important environment variables
|
||||||
ENV NODE_VERSION_LTS="20.12.2" NODE_VERSION_STABLE="20.12.2" NVM_DIR="/usr/local/nvm"
|
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
|
# Set debconf to run non-interactively and install packages
|
||||||
RUN echo 'debconf debconf/frontend select Noninteractive' | debconf-set-selections \
|
RUN echo 'debconf debconf/frontend select Noninteractive' | debconf-set-selections \
|
||||||
@@ -22,24 +22,23 @@ RUN echo 'debconf debconf/frontend select Noninteractive' | debconf-set-selectio
|
|||||||
git \
|
git \
|
||||||
make \
|
make \
|
||||||
openssl \
|
openssl \
|
||||||
python \
|
|
||||||
python3 \
|
python3 \
|
||||||
rsync \
|
rsync \
|
||||||
ssh \
|
ssh \
|
||||||
wget \
|
wget \
|
||||||
unzip \
|
unzip \
|
||||||
# puppeteer
|
# puppeteer
|
||||||
gconf-service \
|
libasound2t64 \
|
||||||
libasound2 \
|
|
||||||
libatk1.0-0 \
|
libatk1.0-0 \
|
||||||
|
libatk-bridge2.0-0 \
|
||||||
libc6 \
|
libc6 \
|
||||||
libcairo2 \
|
libcairo2 \
|
||||||
libcups2 \
|
libcups2 \
|
||||||
libdbus-1-3 \
|
libdbus-1-3 \
|
||||||
libexpat1 \
|
libexpat1 \
|
||||||
libfontconfig1 \
|
libfontconfig1 \
|
||||||
libgcc1 \
|
libgbm1 \
|
||||||
libgconf-2-4 \
|
libgcc-s1 \
|
||||||
libgdk-pixbuf2.0-0 \
|
libgdk-pixbuf2.0-0 \
|
||||||
libglib2.0-0 \
|
libglib2.0-0 \
|
||||||
libgtk-3-0 \
|
libgtk-3-0 \
|
||||||
@@ -62,7 +61,7 @@ RUN echo 'debconf debconf/frontend select Noninteractive' | debconf-set-selectio
|
|||||||
libxtst6 \
|
libxtst6 \
|
||||||
ca-certificates \
|
ca-certificates \
|
||||||
fonts-liberation \
|
fonts-liberation \
|
||||||
libappindicator1 \
|
libayatana-appindicator3-1 \
|
||||||
libnss3 \
|
libnss3 \
|
||||||
lsb-release \
|
lsb-release \
|
||||||
xdg-utils \
|
xdg-utils \
|
||||||
@@ -74,17 +73,18 @@ RUN echo 'debconf debconf/frontend select Noninteractive' | debconf-set-selectio
|
|||||||
&& wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb \
|
&& 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 \
|
&& apt install -y -q --no-install-recommends ./google-chrome-stable_current_amd64.deb \
|
||||||
|
|
||||||
# mongodb
|
# mongodb 8.0
|
||||||
&& curl -fsSL https://www.mongodb.org/static/pgp/server-4.4.asc | apt-key add - \
|
&& curl -fsSL https://www.mongodb.org/static/pgp/server-8.0.asc | \
|
||||||
&& 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 \
|
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 update \
|
||||||
&& apt-get install -y -q --no-install-recommends \
|
&& apt-get install -y -q --no-install-recommends mongodb-org \
|
||||||
mongodb-org \
|
|
||||||
&& apt-get clean \
|
&& apt-get clean \
|
||||||
&& rm -r /var/lib/apt/lists/*
|
&& rm -r /var/lib/apt/lists/*
|
||||||
|
|
||||||
# Install nvm with node and npm
|
# Install nvm with node and npm
|
||||||
RUN curl https://raw.githubusercontent.com/creationix/nvm/v0.33.8/install.sh | bash
|
RUN 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)
|
# Make nvm available globally in all bash shells (interactive + non-interactive)
|
||||||
# IMPORTANT: Prepend to bashrc, before the "[ -z "$PS1" ] && return" line
|
# IMPORTANT: Prepend to bashrc, before the "[ -z "$PS1" ] && return" line
|
||||||
|
|||||||
54
Dockerfile_alpine-bun
Normal file
54
Dockerfile_alpine-bun
Normal file
@@ -0,0 +1,54 @@
|
|||||||
|
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++
|
||||||
|
|
||||||
|
# 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
|
||||||
|
|
||||||
|
# Install Node.js LTS via NVM and Bun
|
||||||
|
RUN 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/v$NODE_VERSION_LTS/lib/node_modules
|
||||||
|
|
||||||
|
# Set entrypoint to make nvm available in all runtime contexts
|
||||||
|
ENTRYPOINT ["/usr/local/bin/docker-entrypoint.sh"]
|
||||||
|
CMD ["bash"]
|
||||||
54
Dockerfile_alpine-deno
Normal file
54
Dockerfile_alpine-deno
Normal file
@@ -0,0 +1,54 @@
|
|||||||
|
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++ \
|
||||||
|
deno
|
||||||
|
|
||||||
|
# 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
|
||||||
|
|
||||||
|
# Install Node.js LTS via NVM (Deno already installed from Alpine repos)
|
||||||
|
RUN 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/v$NODE_VERSION_LTS/lib/node_modules
|
||||||
|
|
||||||
|
# Set entrypoint to make nvm available in all runtime contexts
|
||||||
|
ENTRYPOINT ["/usr/local/bin/docker-entrypoint.sh"]
|
||||||
|
CMD ["bash"]
|
||||||
67
Dockerfile_alpine-node
Normal file
67
Dockerfile_alpine-node
Normal file
@@ -0,0 +1,67 @@
|
|||||||
|
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"]
|
||||||
Reference in New Issue
Block a user