Node-RED 容器化
建立Node-RED容器
工作目录下应有以下文件.
![](https://img.haomeiwen.com/i13670095/c2d2244ce4c8ad67.png)
flows.json
该文件为Node-RED应用的源文件, 可以通过export导出.
Dockerfile
FROM nodered/node-red
COPY package.json .
RUN npm install --unsafe-perm --no-update-notifier --no-fund --only=production --registry=https://registry.npm.taobao.org
ENV NODE_RED_CREDENTIAL_SECRET node-red
COPY flows_cred.json /data/flows_cred.json
COPY flows.json /data/flows.json
COPY settings.js /data/settings.js
FROM
基于nodered/node-red
镜像进行构建
COPY
将package.json
拷贝到容器工作目录, 描述了项目的依赖, 以及项目启动方式
RUN
执行命令npm install --unsafe-perm --no-update-notifier --no-fund --only=production --registry=https://registry.npm.taobao.org
此处为安装项目的依赖, 该依赖由package.json
描述
ENV
设置环境变量NODE_RED_CREDENTIAL_SECRET
为node-red
主要用于解析flows_cred.json
COPY
将flows_cred.json
& flows.json
& settings.js
拷贝到容器/data
下
flows_cred.json
为项目的秘钥文件, 记录数据库连接密码等敏感数据
flows.json
项目源文件.
settings.js
项目的配置文件.
package.json
{
"name": "node-red-project",
"description": "A Node-RED Project",
"version": "0.0.1",
"private": true,
"dependencies": {
"node-red-dashboard": "~2.30.0",
"node-red": "1.3.5"
},
"scripts": {
"start": "node node_modules/node-red/red.js /data/flows.json"
}
}
dependencies
描述了需要的依赖, 依次为dashboard,node-red
scripts
下的start
描述了容器启动时执行的命令
node node_modules/node-red/red.js /data/flows.json
使用node
执行red.js
并把/data/flows.json
作为源文件
构建镜像
docker build . -t iot_edge/services:0.1
与构建数据库镜像类似
启动容器
docker run -itd -p 1880:1880 --name edge_services iot_edge/services:0.1