From 896934ae84446a50915926ba7d5bd657a394bdb4 Mon Sep 17 00:00:00 2001 From: Mitchell R Date: Wed, 13 May 2026 01:57:26 +0200 Subject: [PATCH] feat: bake BF Node-RED nodes into nodered Docker image - New deploy/docker/Dockerfile.nodered extends nodered/node-red, npm-installs the workspace nodered/ package into /usr/src/node-red/node_modules so bf-* nodes auto-load on boot. - docker-compose nodered service switched from public image to this build context. Rebuilding (--build) picks up node changes. --- deploy/docker/Dockerfile.nodered | 21 +++++++++++++++++++++ deploy/docker/docker-compose.yml | 4 +++- 2 files changed, 24 insertions(+), 1 deletion(-) create mode 100644 deploy/docker/Dockerfile.nodered diff --git a/deploy/docker/Dockerfile.nodered b/deploy/docker/Dockerfile.nodered new file mode 100644 index 0000000..11574ca --- /dev/null +++ b/deploy/docker/Dockerfile.nodered @@ -0,0 +1,21 @@ +# BetterFrame Node-RED image with bundled BF nodes preinstalled. +# +# Extends official nodered/node-red, installs the workspace nodered/ +# package into Node-RED's module tree. Rebuilding the image +# (docker compose up --build) picks up any node changes. + +FROM nodered/node-red:latest + +USER root + +# Copy our nodes into a build dir +COPY nodered /tmp/betterframe-nodes + +# Install into Node-RED's own node_modules so they're found at runtime. +# Survives /data volume mounts because /usr/src/node-red is image-level. +RUN cd /usr/src/node-red && \ + npm install --omit=dev /tmp/betterframe-nodes && \ + rm -rf /tmp/betterframe-nodes && \ + chown -R node-red:root /usr/src/node-red/node_modules + +USER node-red diff --git a/deploy/docker/docker-compose.yml b/deploy/docker/docker-compose.yml index 01b11f5..dca4cfa 100644 --- a/deploy/docker/docker-compose.yml +++ b/deploy/docker/docker-compose.yml @@ -44,7 +44,9 @@ services: - betterframe nodered: - image: nodered/node-red:latest + build: + context: ../.. + dockerfile: deploy/docker/Dockerfile.nodered container_name: betterframe-nodered restart: unless-stopped environment: