该项目在 Docker Hub 上提供了多种不同版本的 Docker 容器,分为两类:
-minimal
后缀的镜像。这些容器旨在包含运行 Node-RED 和其核心节点所需的绝对库。具体来说,-minimal
容器不具备构建某些节点组件所需的原生构建工具,这些组件是通过安装它们而触发的。
这两组镜像都基于 NodeJS Alpine 容器。Alpine 是一种 Linux 发行版,旨在提供尽可能小的安装占用,它被用作许多语言运行时容器的基础(例如 NodeJS 和 Python)。作为一系列优化以减小体积的一部分,它使用 musl libc,而不是通常的 glibc 实现。
Musl 与大多数应用程序兼容良好,但在某些情况下可能会导致问题,例如某些 SAP 节点和一些低级视频编解码器。
如果您想扩展提供的 Docker 容器,则需要使用 Alpine 的软件包管理工具 apk
安装其他库或应用程序。
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
除了基于 Alpine 的容器外,Node-RED Docker git 项目还包含一个脚本,用于构建基于 Debian Linux 发行版的 Node-RED Docker 容器版本。这是有用的,因为 Debian 是一个更主流的 Linux 发行版,许多节点包括如何安装先决条件的说明。
您可以通过运行以下命令在本地构建这些容器:
$ git clone https://github.com/node-red/node-red-docker.git
$ cd node-red-docker/docker-custom
$ ./docker-debian.sh
这将生成一个名为 testing:node-red-build
的容器,可以如下运行:
$ docker run -d -p 1880:1880 -v node_red_data:/data --name myNRtest testing:node-red-build
该容器可以扩展以添加您项目所需的先决条件。例如,要为 node-red-contrib-machine-learning 节点添加所需的库,以下 Dockerfile 将扩展之前构建的容器。
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
这可以通过以下命令构建:
docker build . -t custom-node-red
另一种选择是编辑 Dockerfile.debian
以提前构建依赖项。您可以将软件包添加到 apt-get
行,然后添加一个 pip
来安装未直接打包到 Debian 中的本地 Python 模块。
...
COPY --from=build /usr/src/node-red/prod_node_modules ./node_modules
# 更改所有权,安装开发工具并清理
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
...
在这种情况下,您只需重新运行 docker-debian.sh
脚本即可。
版权所有 OpenJS Foundation 和 Node-RED 贡献者。保留所有权利。OpenJS Foundation 拥有并使用注册商标。有关 OpenJS Foundation 的商标列表,请参阅我们的 商标政策 和 商标列表。未在 OpenJS Foundation 商标列表 中列出的商标和徽标是其各自持有者的商标™或注册商标®。使用它们并不意味着与它们有任何关联或认可。
OpenJS Foundation | 使用条款 | 隐私政策 | OpenJS Foundation 章程 | 商标政策 | 商标列表 | Cookie 政策