From 07f70a556f5aba02402d799807afa49cafb81b1a Mon Sep 17 00:00:00 2001 From: MrUnknownDE Date: Sat, 15 Nov 2025 21:02:04 +0100 Subject: [PATCH] update Dockerfiles for Node 18, 20, and 22 to enhance architecture-specific package installations and streamline NodeSource setup --- Dockerfile.node18-linux | 79 +++++++++++++++++++++++++-------------- Dockerfile.node20-linux | 82 ++++++++++++++++++++++++++--------------- Dockerfile.node22-linux | 82 ++++++++++++++++++++++++++--------------- 3 files changed, 156 insertions(+), 87 deletions(-) diff --git a/Dockerfile.node18-linux b/Dockerfile.node18-linux index e0f32c3..9518815 100644 --- a/Dockerfile.node18-linux +++ b/Dockerfile.node18-linux @@ -1,34 +1,59 @@ -# Electron Linux build image (Node 18) on Debian slim FROM debian:bookworm-slim -LABEL org.opencontainers.image.title="electron-builder-linux (Node 18)" -LABEL org.opencontainers.image.description="Container for building Linux Electron apps (AppImage, deb, rpm) using electron-builder (Node 18)" -LABEL maintainer="me@johanneskr.de" +ENV DEBIAN_FRONTEND=noninteractive -ENV DEBIAN_FRONTEND=noninteractive \ - NPM_CONFIG_LOGLEVEL=warn +ARG TARGETARCH -# 1) Basis & Node 18 via NodeSource -RUN apt-get update && apt-get install -y --no-install-recommends \ - ca-certificates curl gnupg2 dirmngr \ - && rm -rf /var/lib/apt/lists/* +RUN dpkg --print-architecture \ + && echo "Building for TARGETARCH=${TARGETARCH}" \ + # Grund-Setup + && apt-get update \ + && apt-get install -y --no-install-recommends \ + ca-certificates curl gnupg \ + # NodeSource-Repo + && curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key \ + | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg \ + && NODE_MAJOR=18 \ + && echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_$NODE_MAJOR.x nodistro main" \ + > /etc/apt/sources.list.d/nodesource.list \ + && apt-get update \ + && apt-get install -y nodejs \ + # Jetzt je nach Architektur unterschiedliche Pakete + && if [ "$TARGETARCH" = "amd64" ]; then \ + echo "Enabling i386 and multilib toolchain for Windows builds"; \ + dpkg --add-architecture i386; \ + apt-get update; \ + apt-get install -y --no-install-recommends \ + wine wine32 wine64 mono-complete winbind cabextract \ + awscli \ + build-essential python3 git file xz-utils zip p7zip-full fakeroot \ + dpkg rpm libarchive-tools \ + libfuse2 \ + pkg-config libudev-dev libusb-1.0-0-dev libsecret-1-dev \ + xvfb fontconfig \ + libx11-xcb1 libxss1 libasound2 libnss3 libgtk-3-0 libatk-bridge2.0-0 libgbm1 libxkbcommon0 libdrm2 \ + make gcc g++ clang libdbus-1-dev libgtk-3-dev \ + libnotify-dev libasound2-dev libcap-dev libcups2-dev libxtst-dev \ + libxss1 libnss3-dev gcc-multilib g++-multilib curl gperf bison python3-dbusmock; \ + else \ + echo "ARM build – no wine32 / multilib toolchain (no Windows builds here)"; \ + apt-get install -y --no-install-recommends \ + awscli \ + build-essential python3 git file xz-utils zip p7zip-full fakeroot \ + dpkg rpm libarchive-tools \ + libfuse2 \ + pkg-config libudev-dev libusb-1.0-0-dev libsecret-1-dev \ + xvfb fontconfig \ + libx11-xcb1 libxss1 libasound2 libnss3 libgtk-3-0 libatk-bridge2.0-0 libgbm1 libxkbcommon0 libdrm2 \ + make gcc g++ clang libdbus-1-dev libgtk-3-dev \ + libnotify-dev libasound2-dev libcap-dev libcups2-dev libxtst-dev \ + libxss1 libnss3-dev curl gperf bison python3-dbusmock; \ + fi \ + && apt-get clean \ + && rm -rf /var/lib/apt/lists/* -RUN curl -fsSL https://deb.nodesource.com/setup_18.x | bash - \ - && apt-get update && apt-get install -y --no-install-recommends nodejs \ - && corepack enable \ - && rm -rf /var/lib/apt/lists/* +WORKDIR /project -# 2) Build- & Packaging-Deps (wie oben) -RUN apt-get update && apt-get install -y --no-install-recommends \ - build-essential python3 git file xz-utils zip p7zip-full fakeroot \ - dpkg rpm libarchive-tools \ - libfuse2 \ - pkg-config libudev-dev libusb-1.0-0-dev libsecret-1-dev \ - xvfb fontconfig \ - libx11-xcb1 libxss1 libasound2 libnss3 libgtk-3-0 libatk-bridge2.0-0 libgbm1 libxkbcommon0 libdrm2 \ - && rm -rf /var/lib/apt/lists/* +RUN npm install -g electron-builder -RUN node -v && npm -v && npx --yes electron-builder --version || true - -WORKDIR /workspace -CMD ["bash"] +ENTRYPOINT ["/bin/bash"] \ No newline at end of file diff --git a/Dockerfile.node20-linux b/Dockerfile.node20-linux index 351485d..db45c52 100644 --- a/Dockerfile.node20-linux +++ b/Dockerfile.node20-linux @@ -1,37 +1,59 @@ -# Electron Linux build image (Node 20) on Debian slim FROM debian:bookworm-slim -LABEL org.opencontainers.image.title="electron-builder-linux (Node 20)" -LABEL org.opencontainers.image.description="Container for building Linux Electron apps (AppImage, deb, rpm) using electron-builder (Node 20)" -LABEL maintainer="me@johanneskr.de" +ENV DEBIAN_FRONTEND=noninteractive -ENV DEBIAN_FRONTEND=noninteractive \ - NPM_CONFIG_LOGLEVEL=warn +ARG TARGETARCH -# 1) Basis & Node 20 via NodeSource -RUN apt-get update && apt-get install -y --no-install-recommends \ - ca-certificates curl gnupg2 dirmngr \ - && rm -rf /var/lib/apt/lists/* - -RUN curl -fsSL https://deb.nodesource.com/setup_20.x | bash - \ - && apt-get update && apt-get install -y --no-install-recommends nodejs \ - && corepack enable \ - && rm -rf /var/lib/apt/lists/* - -RUN apt-get update && apt-get install -y --no-install-recommends \ - build-essential python3 git file xz-utils zip p7zip-full fakeroot \ - dpkg rpm libarchive-tools \ - libfuse2 \ - pkg-config libudev-dev libusb-1.0-0-dev libsecret-1-dev \ - xvfb fontconfig \ - libx11-xcb1 libxss1 libasound2 libnss3 libgtk-3-0 libatk-bridge2.0-0 libgbm1 libxkbcommon0 libdrm2 \ - make gcc g++ build-essential clang libdbus-1-dev libgtk-3-dev \ - libnotify-dev libasound2-dev libcap-dev libcups2-dev libxtst-dev \ - libxss1 libnss3-dev gcc-multilib g++-multilib curl gperf bison python3-dbusmock \ +RUN dpkg --print-architecture \ + && echo "Building for TARGETARCH=${TARGETARCH}" \ + # Grund-Setup + && apt-get update \ + && apt-get install -y --no-install-recommends \ + ca-certificates curl gnupg \ + # NodeSource-Repo + && curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key \ + | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg \ + && NODE_MAJOR=20 \ + && echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_$NODE_MAJOR.x nodistro main" \ + > /etc/apt/sources.list.d/nodesource.list \ + && apt-get update \ + && apt-get install -y nodejs \ + # Jetzt je nach Architektur unterschiedliche Pakete + && if [ "$TARGETARCH" = "amd64" ]; then \ + echo "Enabling i386 and multilib toolchain for Windows builds"; \ + dpkg --add-architecture i386; \ + apt-get update; \ + apt-get install -y --no-install-recommends \ + wine wine32 wine64 mono-complete winbind cabextract \ + awscli \ + build-essential python3 git file xz-utils zip p7zip-full fakeroot \ + dpkg rpm libarchive-tools \ + libfuse2 \ + pkg-config libudev-dev libusb-1.0-0-dev libsecret-1-dev \ + xvfb fontconfig \ + libx11-xcb1 libxss1 libasound2 libnss3 libgtk-3-0 libatk-bridge2.0-0 libgbm1 libxkbcommon0 libdrm2 \ + make gcc g++ clang libdbus-1-dev libgtk-3-dev \ + libnotify-dev libasound2-dev libcap-dev libcups2-dev libxtst-dev \ + libxss1 libnss3-dev gcc-multilib g++-multilib curl gperf bison python3-dbusmock; \ + else \ + echo "ARM build – no wine32 / multilib toolchain (no Windows builds here)"; \ + apt-get install -y --no-install-recommends \ + awscli \ + build-essential python3 git file xz-utils zip p7zip-full fakeroot \ + dpkg rpm libarchive-tools \ + libfuse2 \ + pkg-config libudev-dev libusb-1.0-0-dev libsecret-1-dev \ + xvfb fontconfig \ + libx11-xcb1 libxss1 libasound2 libnss3 libgtk-3-0 libatk-bridge2.0-0 libgbm1 libxkbcommon0 libdrm2 \ + make gcc g++ clang libdbus-1-dev libgtk-3-dev \ + libnotify-dev libasound2-dev libcap-dev libcups2-dev libxtst-dev \ + libxss1 libnss3-dev curl gperf bison python3-dbusmock; \ + fi \ + && apt-get clean \ && rm -rf /var/lib/apt/lists/* -# (Optional) Sanity-Check -RUN node -v && npm -v && npx --yes electron-builder --version || true +WORKDIR /project -WORKDIR /workspace -CMD ["bash"] +RUN npm install -g electron-builder + +ENTRYPOINT ["/bin/bash"] \ No newline at end of file diff --git a/Dockerfile.node22-linux b/Dockerfile.node22-linux index 24ee243..2d2a178 100644 --- a/Dockerfile.node22-linux +++ b/Dockerfile.node22-linux @@ -1,37 +1,59 @@ -# Electron Linux build image (Node 20) on Debian slim FROM debian:bookworm-slim -LABEL org.opencontainers.image.title="electron-builder-linux (Node 22)" -LABEL org.opencontainers.image.description="Container for building Linux Electron apps (AppImage, deb, rpm) using electron-builder (Node 22)" -LABEL maintainer="me@johanneskr.de" +ENV DEBIAN_FRONTEND=noninteractive -ENV DEBIAN_FRONTEND=noninteractive \ - NPM_CONFIG_LOGLEVEL=warn +ARG TARGETARCH -# 1) Basis & Node 20 via NodeSource -RUN apt-get update && apt-get install -y --no-install-recommends \ - ca-certificates curl gnupg2 dirmngr \ - && rm -rf /var/lib/apt/lists/* - -RUN curl -fsSL https://deb.nodesource.com/setup_22.x | bash - \ - && apt-get update && apt-get install -y --no-install-recommends nodejs \ - && corepack enable \ - && rm -rf /var/lib/apt/lists/* - -RUN apt-get update && apt-get install -y --no-install-recommends \ - build-essential python3 git file xz-utils zip p7zip-full fakeroot \ - dpkg rpm libarchive-tools \ - libfuse2 \ - pkg-config libudev-dev libusb-1.0-0-dev libsecret-1-dev \ - xvfb fontconfig \ - libx11-xcb1 libxss1 libasound2 libnss3 libgtk-3-0 libatk-bridge2.0-0 libgbm1 libxkbcommon0 libdrm2 \ - make gcc g++ build-essential clang libdbus-1-dev libgtk-3-dev \ - libnotify-dev libasound2-dev libcap-dev libcups2-dev libxtst-dev \ - libxss1 libnss3-dev gcc-multilib g++-multilib curl gperf bison python3-dbusmock \ +RUN dpkg --print-architecture \ + && echo "Building for TARGETARCH=${TARGETARCH}" \ + # Grund-Setup + && apt-get update \ + && apt-get install -y --no-install-recommends \ + ca-certificates curl gnupg \ + # NodeSource-Repo + && curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key \ + | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg \ + && NODE_MAJOR=22 \ + && echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_$NODE_MAJOR.x nodistro main" \ + > /etc/apt/sources.list.d/nodesource.list \ + && apt-get update \ + && apt-get install -y nodejs \ + # Jetzt je nach Architektur unterschiedliche Pakete + && if [ "$TARGETARCH" = "amd64" ]; then \ + echo "Enabling i386 and multilib toolchain for Windows builds"; \ + dpkg --add-architecture i386; \ + apt-get update; \ + apt-get install -y --no-install-recommends \ + wine wine32 wine64 mono-complete winbind cabextract \ + awscli \ + build-essential python3 git file xz-utils zip p7zip-full fakeroot \ + dpkg rpm libarchive-tools \ + libfuse2 \ + pkg-config libudev-dev libusb-1.0-0-dev libsecret-1-dev \ + xvfb fontconfig \ + libx11-xcb1 libxss1 libasound2 libnss3 libgtk-3-0 libatk-bridge2.0-0 libgbm1 libxkbcommon0 libdrm2 \ + make gcc g++ clang libdbus-1-dev libgtk-3-dev \ + libnotify-dev libasound2-dev libcap-dev libcups2-dev libxtst-dev \ + libxss1 libnss3-dev gcc-multilib g++-multilib curl gperf bison python3-dbusmock; \ + else \ + echo "ARM build – no wine32 / multilib toolchain (no Windows builds here)"; \ + apt-get install -y --no-install-recommends \ + awscli \ + build-essential python3 git file xz-utils zip p7zip-full fakeroot \ + dpkg rpm libarchive-tools \ + libfuse2 \ + pkg-config libudev-dev libusb-1.0-0-dev libsecret-1-dev \ + xvfb fontconfig \ + libx11-xcb1 libxss1 libasound2 libnss3 libgtk-3-0 libatk-bridge2.0-0 libgbm1 libxkbcommon0 libdrm2 \ + make gcc g++ clang libdbus-1-dev libgtk-3-dev \ + libnotify-dev libasound2-dev libcap-dev libcups2-dev libxtst-dev \ + libxss1 libnss3-dev curl gperf bison python3-dbusmock; \ + fi \ + && apt-get clean \ && rm -rf /var/lib/apt/lists/* -# (Optional) Sanity-Check -RUN node -v && npm -v && npx --yes electron-builder --version || true +WORKDIR /project -WORKDIR /workspace -CMD ["bash"] +RUN npm install -g electron-builder + +ENTRYPOINT ["/bin/bash"] \ No newline at end of file