The project makes available a number of different versions of the Docker container on Docker hub which fall into 2 categories:
-minimal
suffix. These containers are designed to contain the absolute libraries required to run Node-RED and it’s core nodes.Specifically the -minimal
containers do not have the native build tools required to build some nodes components triggered by installing them.
Both of these sets of images are based on the NodeJS Alpine containers. Alpine is a Linux distribution that aims to provide the smallest possible install footprint, it is used as the base for many language runtime containers (e.g. NodeJS & Python). As part of a number of optimizations to reduce the size it uses the musl libc instead of the usual glibc implementation.
Musl works fine with most applications but on some occasions it can cause problems e.g. with some of the SAP nodes and with some low level video codec.
If you want to extend the provided Docker containers then then you will need to use Alpine’s package management tool apk
to install additional libraries or applications.
FROM nodered/node-red:latest
USER root
RUN apk add py3-pip py3-numpy py3-pandas py3-scikit-learn
RUN pip install tensorflow
USER node-red
As well as the Alpine based containers the Node-RED Docker git project also includes a script to build a version of the Node-RED Docker containers based on the Debian Linux Distribution. This is useful as Debian is a more mainstream Linux distribution and many nodes include instructions on how to install prerequisites.
You can build the containers locally by running the following commands:
$ git clone https://github.com/node-red/node-red-docker.git
$ cd node-red-docker/docker-custom
$ ./docker-debian.sh
This will a container called testing:node-red-build
which can be run as follows:
$ docker run -d -p 1880:1880 -v node_red_data:/data --name myNRtest testing:node-red-build
This container can be extended to add the required prerequisites for your projects. For example to add the required libraries for the node-red-contrib-machine-learning node the following Dockerfile will extend the previously built container.
FROM testing:node-red-build
USER root
RUN apt-get install -y python3-pip python3-numpy python3-pandas
RUN pip install scikit-learn tensorflow
USER node-red
This can be build with
docker build . -t custom-node-red
The other option is to edit the Dockerfile.debian
to build in the dependencies up front. You can add the packages to the apt-get
line and then add a pip
to install the native Python modules not directly packaged for Debian.
...
COPY --from=build /usr/src/node-red/prod_node_modules ./node_modules
# Chown, install devtools & Clean up
RUN chown -R node-red:root /usr/src/node-red && \
apt-get update && apt-get install -y build-essential python-dev python3 \
python3-pip python3-numpy python3-pandas && \
pip install scikit-learn tensorflow && \
rm -r /tmp/*
USER node-red
...
In this case you would just need to rerun the docker-debian.sh
script.
Node-RED: Low-code programming for event-driven applications.
Copyright OpenJS Foundation and Node-RED contributors. All rights reserved. The OpenJS Foundation has registered trademarks and uses trademarks. For a list of trademarks of the OpenJS Foundation, please see our Trademark Policy and Trademark List. Trademarks and logos not indicated on the list of OpenJS Foundation trademarks are trademarks™ or registered® trademarks of their respective holders. Use of them does not imply any affiliation with or endorsement by them.
The OpenJS Foundation | Terms of Use | Privacy Policy | OpenJS Foundation Bylaws | Trademark Policy | Trademark List | Cookie Policy