BetterFrame/deploy/docker/Dockerfile.nodered

33 lines
1.3 KiB
Docker
Raw Normal View History

# 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
# Run entrypoint as root so it can fix stale /data state (e.g. /data/settings.js
# left as a directory by a previous broken bind mount). Entrypoint drops to
# node-red via su-exec before launching the actual server.
USER root
ENTRYPOINT ["/usr/local/bin/bf-nodered-entrypoint"]
CMD []