diff --git a/Dockerfile b/Dockerfile index 4967ee4..d3dca51 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,9 +1,9 @@ -FROM ubuntu:20.04 +FROM ubuntu:24.04 LABEL author="Task Venture Capital GmbH " WORKDIR /workspace # 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 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 \ make \ openssl \ - python \ python3 \ rsync \ ssh \ wget \ unzip \ # puppeteer - gconf-service \ - libasound2 \ + 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 \ @@ -62,7 +61,7 @@ RUN echo 'debconf debconf/frontend select Noninteractive' | debconf-set-selectio libxtst6 \ ca-certificates \ fonts-liberation \ - libappindicator1 \ + libayatana-appindicator3-1 \ libnss3 \ lsb-release \ 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 \ && 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 \ + # mongodb 8.0 + && 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 install -y -q --no-install-recommends mongodb-org \ && apt-get clean \ && rm -r /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 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: Prepend to bashrc, before the "[ -z "$PS1" ] && return" line diff --git a/Dockerfile_alpine-bun b/Dockerfile_alpine-bun new file mode 100644 index 0000000..de36ad5 --- /dev/null +++ b/Dockerfile_alpine-bun @@ -0,0 +1,54 @@ +FROM alpine:latest +LABEL author="Task Venture Capital GmbH " + +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"] diff --git a/Dockerfile_alpine-deno b/Dockerfile_alpine-deno new file mode 100644 index 0000000..2cee752 --- /dev/null +++ b/Dockerfile_alpine-deno @@ -0,0 +1,54 @@ +FROM alpine:edge +LABEL author="Task Venture Capital GmbH " + +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"] diff --git a/Dockerfile_alpine-node b/Dockerfile_alpine-node new file mode 100644 index 0000000..122a77d --- /dev/null +++ b/Dockerfile_alpine-node @@ -0,0 +1,67 @@ +FROM alpine:latest +LABEL author="Task Venture Capital GmbH " + +WORKDIR /workspace + +# Important environment variables +ENV NODE_VERSION_LTS="24.13.0" \ + NVM_DIR="/usr/local/nvm" \ + PNPM_HOME="/root/.local/share/pnpm" \ + NVM_NODEJS_ORG_MIRROR="https://unofficial-builds.nodejs.org/download/release" + +# 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"]