mirror of
https://github.com/BetterCorp/BetterFrame.git
synced 2026-05-26 19:06:34 +00:00
Previous deploy left /data/settings.js as a DIRECTORY (Docker auto-mkdir from a failed bind mount earlier). cp from non-root user then failed 'Permission denied' writing inside it. Entrypoint now: - Detects + rm -rf the stale directory - Seeds /data/settings.js from /usr/src/bf-settings.js - Chowns /data to node-red - exec su-exec node-red:node-red to drop privileges before npm start
32 lines
1.3 KiB
Docker
32 lines
1.3 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
|
|
|
|
# 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 []
|