diff --git a/.github/workflows/build-publish-containers.yml b/.github/workflows/build-publish-containers.yml
index ec2bcd9f..411ee5cd 100644
--- a/.github/workflows/build-publish-containers.yml
+++ b/.github/workflows/build-publish-containers.yml
@@ -32,8 +32,8 @@ jobs:
       contents: read
     strategy:
       matrix:
-        tag: ['client:centos7', 'build-node:debian11']
-        platform: [amd64, arm64, ppc64le]
+        tag: ['client:centos7', 'build-node:debian11', 'build-node:debian12']
+        platform: [amd64, arm64]
 
     steps:
       - name: Check out the repo
@@ -91,7 +91,7 @@ jobs:
       contents: read
     strategy:
       matrix:
-        tag: ['client:centos7', 'build-node:debian11']
+        tag: ['client:centos7', 'build-node:debian11', 'build-node:debian12']
     steps:
       - name: Login to GitHub Container Registry
         if: github.event_name != 'pull_request'
@@ -110,8 +110,7 @@ jobs:
         run: |
           docker buildx imagetools create -t ghcr.io/${{ env.REPOSITORY_OWNER }}/${{ matrix.tag }} \
             ghcr.io/${{ env.REPOSITORY_OWNER }}/${{ matrix.tag }}-amd64 \
-            ghcr.io/${{ env.REPOSITORY_OWNER }}/${{ matrix.tag }}-arm64 \
-            ghcr.io/${{ env.REPOSITORY_OWNER }}/${{ matrix.tag }}-ppc64le
+            ghcr.io/${{ env.REPOSITORY_OWNER }}/${{ matrix.tag }}-arm64
 
       - name: Inspect the final image
         if: github.event_name != 'pull_request'
diff --git a/containers/Dockerfile.EESSI-build-node-debian11 b/containers/Dockerfile.EESSI-build-node-debian11
index 4fe34ae3..8e1a3b8a 100644
--- a/containers/Dockerfile.EESSI-build-node-debian11
+++ b/containers/Dockerfile.EESSI-build-node-debian11
@@ -1,4 +1,5 @@
 ARG cvmfsversion=2.11.2
+ARG archspecversion=0.2.2
 ARG awscliversion=1.32.22
 ARG fuseoverlayfsversion=1.10
 
@@ -10,6 +11,7 @@ RUN sh /build-or-download-cvmfs-debs.sh ${cvmfsversion}
 
 FROM debian:11.5
 ARG cvmfsversion
+ARG archspecversion
 ARG awscliversion
 ARG fuseoverlayfsversion
 
@@ -38,7 +40,7 @@ RUN mkdir -p /cvmfs/software.eessi.io
 RUN useradd -ms /bin/bash eessi
 
 # stick to awscli v1.x, 2.x is not available through PyPI (see https://github.com/aws/aws-cli/issues/4947)
-RUN pip3 install archspec awscli==${awscliversion}
+RUN pip3 install archspec==${archspecversion} awscli==${awscliversion}
 
 RUN curl -OL https://raw.githubusercontent.com/EESSI/eessi-bot-software-layer/develop/scripts/eessi-upload-to-staging \
   && mv eessi-upload-to-staging /usr/bin \
diff --git a/containers/Dockerfile.EESSI-build-node-debian12 b/containers/Dockerfile.EESSI-build-node-debian12
new file mode 100644
index 00000000..ede36526
--- /dev/null
+++ b/containers/Dockerfile.EESSI-build-node-debian12
@@ -0,0 +1,48 @@
+ARG cvmfsversion=2.11.2
+ARG archspecversion=0.2.2
+ARG awscliversion=1.32.22
+ARG fuseoverlayfsversion=1.10
+
+FROM debian:12.5 AS prepare-deb
+ARG cvmfsversion
+COPY ./containers/build-or-download-cvmfs-debs.sh /build-or-download-cvmfs-debs.sh
+RUN sh /build-or-download-cvmfs-debs.sh ${cvmfsversion}
+
+
+FROM debian:12.5
+ARG cvmfsversion
+ARG archspecversion
+ARG awscliversion
+ARG fuseoverlayfsversion
+
+COPY --from=prepare-deb /root/deb /root/deb
+
+RUN apt-get update
+RUN apt-get install -y sudo vim openssh-client gawk autofs curl attr uuid fuse3 libfuse2 psmisc gdb uuid-dev lsof strace
+# python3 and jq are required for eessi-upload-to-staging script (next to awscli)
+RUN apt-get install -y python3-pip python3-venv jq
+RUN dpkg -i /root/deb/cvmfs_${cvmfsversion}~1+debian12_$(dpkg --print-architecture).deb \
+            /root/deb/cvmfs-fuse3_${cvmfsversion}~1+debian12_$(dpkg --print-architecture).deb \
+            /root/deb/cvmfs-libs_${cvmfsversion}~1+debian12_$(dpkg --print-architecture).deb \
+            /root/deb/cvmfs-config-default_latest_all.deb \
+            /root/deb/cvmfs-config-eessi_latest_all.deb
+
+# download binary for specific version of fuse-overlayfs
+RUN curl -L -o /usr/local/bin/fuse-overlayfs https://github.com/containers/fuse-overlayfs/releases/download/v${fuseoverlayfsversion}/fuse-overlayfs-$(uname -m) \
+  && chmod +x /usr/local/bin/fuse-overlayfs
+
+RUN echo 'CVMFS_QUOTA_LIMIT=10000' > /etc/cvmfs/default.local \
+  && echo 'CVMFS_CLIENT_PROFILE="single"' >> /etc/cvmfs/default.local \
+  && echo 'CVMFS_HIDE_MAGIC_XATTRS=yes' >> /etc/cvmfs/default.local
+
+RUN mkdir -p /cvmfs/software.eessi.io
+
+RUN useradd -ms /bin/bash eessi
+
+RUN python3 -m venv /opt/archspec && . /opt/archspec/bin/activate && pip3 install archspec==${archspecversion} && deactivate && ln -s /opt/archspec/bin/archspec /usr/local/bin/archspec
+# stick to awscli v1.x, 2.x is not available through PyPI (see https://github.com/aws/aws-cli/issues/4947)
+RUN python3 -m venv /opt/awscli && . /opt/awscli/bin/activate && pip3 install awscli==${awscliversion} && deactivate && ln -s /opt/awscli/bin/aws /usr/local/bin/aws
+
+RUN curl -OL https://raw.githubusercontent.com/EESSI/eessi-bot-software-layer/develop/scripts/eessi-upload-to-staging \
+  && mv eessi-upload-to-staging /usr/bin \
+  && chmod a+x /usr/bin/eessi-upload-to-staging
diff --git a/containers/build-or-download-cvmfs-debs.sh b/containers/build-or-download-cvmfs-debs.sh
index 071fa867..decde578 100644
--- a/containers/build-or-download-cvmfs-debs.sh
+++ b/containers/build-or-download-cvmfs-debs.sh
@@ -1,10 +1,12 @@
 #/bin/bash
 cvmfsversion=$1
-arch=$(dpkg --print-architecture)
-os=debian11
 
 apt-get update
-apt-get install -y wget
+apt-get install -y wget lsb-release
+
+arch=$(dpkg --print-architecture)
+os="$(lsb_release -si | tr [:upper:] [:lower:])$(lsb_release -sr)"
+
 if [ "$arch" = "ppc64el" ] || [ "$arch" = "arm64" ]
 then
     apt-get install -y devscripts libfuse3-dev cmake cpio libcap-dev libssl-dev libfuse-dev pkg-config libattr1-dev python-dev python-setuptools python3-dev python3-setuptools uuid-dev valgrind libz-dev lsb-release