BetterFrame/deploy/docker/Dockerfile.nodered
Mitchell R 7baa1a07f9
fix(nodered): seed /data/settings.js via entrypoint wrapper
The /data named volume hides anything Dockerfile COPYs into /data, so
the previous CMD override pointing at /usr/src/bf-settings.js didn't
help — Node-RED's launch script still looks for /data/settings.js by
default, which doesn't exist after the volume overlays.

Solution: entrypoint wrapper copies /usr/src/bf-settings.js to
/data/settings.js on first boot when missing, then exec's npm start.
Subsequent boots keep the user-edited version in the volume.
2026-05-19 03:57:42 +02:00

29 lines
1 KiB
Docker

# BetterFrame Node-RED image with bundled BF nodes preinstalled.
#
# Extends official nodered/node-red, installs the workspace nodered/
# package at /usr/src/betterframe-nodes. settings.js points nodesDir
# there so Node-RED scans it on boot. Survives /data volume mount.
FROM nodered/node-red:latest
USER root
# Copy our nodes into a path outside /data (which is volume-mounted)
COPY nodered /usr/src/betterframe-nodes
# Settings template + entrypoint that seeds /data/settings.js on first boot
# (the /data named volume hides anything we COPY directly there, so we have
# to plant the file after the volume mount comes up).
COPY deploy/docker/nodered-settings.js /usr/src/bf-settings.js
COPY deploy/docker/nodered-entrypoint.sh /usr/local/bin/bf-nodered-entrypoint
RUN chmod +x /usr/local/bin/bf-nodered-entrypoint
# Install deps for the nodes
RUN cd /usr/src/betterframe-nodes && \
npm install --omit=dev && \
chown -R node-red:root /usr/src/betterframe-nodes /usr/src/bf-settings.js
USER node-red
ENTRYPOINT ["/usr/local/bin/bf-nodered-entrypoint"]
CMD []