2026-02-06 08:44:56 +00:00
|
|
|
FROM ubuntu:24.04
|
2023-04-02 13:22:11 +02:00
|
|
|
LABEL author="Task Venture Capital GmbH <hello@task.vc>"
|
2018-11-26 20:36:03 +01:00
|
|
|
|
2018-05-16 18:05:55 +02:00
|
|
|
WORKDIR /workspace
|
2026-02-06 09:31:43 +00:00
|
|
|
# important environment variables
|
2026-02-06 08:44:56 +00:00
|
|
|
ENV NODE_VERSION_LTS="24.13.0" NODE_VERSION_STABLE="24.13.0" NVM_DIR="/usr/local/nvm"
|
2016-06-04 02:43:39 +02:00
|
|
|
|
2026-02-06 09:31:43 +00:00
|
|
|
# Chromium paths for Puppeteer/Playwright compatibility
|
|
|
|
|
ENV PUPPETEER_EXECUTABLE_PATH=/usr/bin/chromium-browser
|
|
|
|
|
ENV CHROME_BIN=/usr/bin/chromium-browser
|
|
|
|
|
|
2026-02-07 10:43:46 +00:00
|
|
|
# Layer 1: Base system + dev tools
|
2016-06-04 03:19:20 +02:00
|
|
|
RUN echo 'debconf debconf/frontend select Noninteractive' | debconf-set-selections \
|
|
|
|
|
&& apt-get update \
|
2016-04-24 01:34:44 +02:00
|
|
|
&& apt-get upgrade --no-install-recommends -y \
|
|
|
|
|
&& apt-get install -y -q --no-install-recommends \
|
|
|
|
|
software-properties-common \
|
2016-02-28 00:15:12 +01:00
|
|
|
apt-transport-https \
|
|
|
|
|
build-essential \
|
|
|
|
|
ca-certificates \
|
2021-11-12 18:43:09 +01:00
|
|
|
gpg-agent \
|
2016-02-28 00:15:12 +01:00
|
|
|
curl \
|
|
|
|
|
git \
|
2016-06-25 21:04:10 +02:00
|
|
|
openssl \
|
2021-10-22 19:34:39 +02:00
|
|
|
python3 \
|
2016-02-28 00:15:12 +01:00
|
|
|
rsync \
|
2017-09-12 20:29:06 +02:00
|
|
|
ssh \
|
2017-06-30 17:13:37 +02:00
|
|
|
wget \
|
2025-10-26 12:12:54 +00:00
|
|
|
unzip \
|
2026-02-07 10:43:46 +00:00
|
|
|
iputils-ping \
|
|
|
|
|
dnsutils \
|
2026-02-07 10:54:17 +00:00
|
|
|
tini \
|
|
|
|
|
&& apt-get clean
|
2026-02-07 10:43:46 +00:00
|
|
|
|
|
|
|
|
# Layer 2: Chromium + Puppeteer/Playwright browser deps
|
|
|
|
|
RUN apt-get install -y -q --no-install-recommends \
|
|
|
|
|
chromium-browser \
|
2026-02-06 08:44:56 +00:00
|
|
|
libasound2t64 \
|
2021-11-07 18:44:28 +01:00
|
|
|
libatk1.0-0 \
|
2026-02-06 08:44:56 +00:00
|
|
|
libatk-bridge2.0-0 \
|
2021-11-07 18:44:28 +01:00
|
|
|
libc6 \
|
|
|
|
|
libcairo2 \
|
|
|
|
|
libcups2 \
|
|
|
|
|
libdbus-1-3 \
|
|
|
|
|
libexpat1 \
|
|
|
|
|
libfontconfig1 \
|
2026-02-06 08:44:56 +00:00
|
|
|
libgbm1 \
|
|
|
|
|
libgcc-s1 \
|
2021-11-07 18:44:28 +01:00
|
|
|
libgdk-pixbuf2.0-0 \
|
|
|
|
|
libglib2.0-0 \
|
|
|
|
|
libgtk-3-0 \
|
|
|
|
|
libnspr4 \
|
|
|
|
|
libpango-1.0-0 \
|
|
|
|
|
libpangocairo-1.0-0 \
|
|
|
|
|
libstdc++6 \
|
|
|
|
|
libx11-6 \
|
|
|
|
|
libx11-xcb1 \
|
|
|
|
|
libxcb1 \
|
|
|
|
|
libxcomposite1 \
|
|
|
|
|
libxcursor1 \
|
|
|
|
|
libxdamage1 \
|
|
|
|
|
libxext6 \
|
|
|
|
|
libxfixes3 \
|
|
|
|
|
libxi6 \
|
|
|
|
|
libxrandr2 \
|
|
|
|
|
libxrender1 \
|
|
|
|
|
libxss1 \
|
|
|
|
|
libxtst6 \
|
|
|
|
|
fonts-liberation \
|
2026-02-06 08:44:56 +00:00
|
|
|
libayatana-appindicator3-1 \
|
2021-11-07 18:44:28 +01:00
|
|
|
libnss3 \
|
|
|
|
|
lsb-release \
|
2026-02-07 10:54:17 +00:00
|
|
|
xdg-utils \
|
|
|
|
|
&& apt-get clean \
|
|
|
|
|
&& rm -rf /var/lib/apt/lists/*
|
2026-02-07 10:43:46 +00:00
|
|
|
|
|
|
|
|
# Layer 3: MongoDB 8.0
|
|
|
|
|
RUN curl -fsSL https://www.mongodb.org/static/pgp/server-8.0.asc | \
|
2026-02-06 08:44:56 +00:00
|
|
|
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 \
|
2021-11-12 18:46:42 +01:00
|
|
|
&& apt-get update \
|
2026-02-06 08:44:56 +00:00
|
|
|
&& apt-get install -y -q --no-install-recommends mongodb-org \
|
2016-04-24 01:34:44 +02:00
|
|
|
&& apt-get clean \
|
2026-02-07 10:43:46 +00:00
|
|
|
&& rm -rf /var/lib/apt/lists/*
|
2016-02-24 20:57:17 +01:00
|
|
|
|
2016-02-28 00:15:12 +01:00
|
|
|
# Install nvm with node and npm
|
2026-02-07 10:54:17 +00:00
|
|
|
RUN mkdir -p $NVM_DIR && curl -fsSL https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | bash
|
2022-10-11 10:42:42 +02:00
|
|
|
|
2025-10-26 10:35:42 +00:00
|
|
|
# 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
|
|
|
|
|
|
2025-10-26 10:38:59 +00:00
|
|
|
# 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
|
2025-10-26 10:35:42 +00:00
|
|
|
|
|
|
|
|
# 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
|
|
|
|
|
|
2023-03-29 12:13:24 +02:00
|
|
|
# prepare pnpm
|
|
|
|
|
ENV PNPM_HOME="/root/.local/share/pnpm/pnpm"
|
|
|
|
|
RUN mkdir -p ${PNPM_HOME}
|
|
|
|
|
ENV PATH="$PNPM_HOME:$PATH"
|
|
|
|
|
|
2025-10-26 10:35:42 +00:00
|
|
|
# Now nvm is available directly without sourcing
|
|
|
|
|
RUN nvm install $NODE_VERSION_STABLE \
|
2022-10-11 10:42:42 +02:00
|
|
|
&& nvm alias default $NODE_VERSION_STABLE \
|
|
|
|
|
&& nvm use default \
|
2023-03-29 12:53:57 +02:00
|
|
|
&& curl -fsSL https://get.pnpm.io/install.sh | bash - \
|
2023-03-29 12:42:59 +02:00
|
|
|
&& pnpm -v \
|
2025-10-26 10:35:42 +00:00
|
|
|
&& pnpm config set unsafe-perm true
|
2022-10-11 10:42:42 +02:00
|
|
|
|
2026-02-07 10:54:17 +00:00
|
|
|
ENV NODE_PATH $NVM_DIR/versions/node/v$NODE_VERSION_STABLE/lib/node_modules
|
2022-10-11 10:42:42 +02:00
|
|
|
ENV PATH $NVM_DIR/versions/node/v$NODE_VERSION_STABLE/bin:$PATH
|
2025-10-26 10:35:42 +00:00
|
|
|
|
2025-10-26 12:12:54 +00:00
|
|
|
# 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"
|
|
|
|
|
|
2025-10-26 10:35:42 +00:00
|
|
|
# Set entrypoint to make nvm available in all runtime contexts
|
2026-02-06 14:00:03 +00:00
|
|
|
ENTRYPOINT ["/usr/bin/tini", "--", "/usr/local/bin/docker-entrypoint.sh"]
|
2025-10-26 10:35:42 +00:00
|
|
|
CMD ["bash"]
|