From eb1ac8245a36714fb3bb59f39abb535f8ac7cc6d Mon Sep 17 00:00:00 2001 From: Mitchell R Date: Tue, 19 May 2026 04:04:53 +0200 Subject: [PATCH] =?UTF-8?q?fix(nodered):=20install=20gosu,=20swap=20su-exe?= =?UTF-8?q?c=20=E2=86=92=20gosu=20(debian=20base,=20not=20alpine)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- deploy/docker/Dockerfile.nodered | 6 ++++++ deploy/docker/nodered-entrypoint.sh | 5 +++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/deploy/docker/Dockerfile.nodered b/deploy/docker/Dockerfile.nodered index f7b072b..46c600d 100644 --- a/deploy/docker/Dockerfile.nodered +++ b/deploy/docker/Dockerfile.nodered @@ -8,6 +8,12 @@ FROM nodered/node-red:latest USER root +# gosu lets the entrypoint drop from root to node-red after fixing /data +# perms. nodered/node-red is Debian-slim based so apt is the right channel. +RUN apt-get update \ + && apt-get install -y --no-install-recommends gosu \ + && rm -rf /var/lib/apt/lists/* + # Copy our nodes into a path outside /data (which is volume-mounted) COPY nodered /usr/src/betterframe-nodes diff --git a/deploy/docker/nodered-entrypoint.sh b/deploy/docker/nodered-entrypoint.sh index 3ff5f27..dbb6507 100755 --- a/deploy/docker/nodered-entrypoint.sh +++ b/deploy/docker/nodered-entrypoint.sh @@ -26,5 +26,6 @@ fi # Ensure the volume + seeded file are owned by node-red. chown -R node-red:root "$DATA" 2>/dev/null || true -# Drop to the node-red user before launching. The base image ships su-exec. -exec su-exec node-red:node-red npm start --cache /data/.npm -- --userDir /data "$@" +# Drop to the node-red user before launching. nodered/node-red is Debian +# based; we installed gosu in the Dockerfile for this. +exec gosu node-red:node-red npm start --cache /data/.npm -- --userDir /data "$@"