微信ID: Van1sh1ngAct
建立Node-RED容器
工作目錄下應(yīng)有以下文件.
flows.json
該文件為Node-RED應(yīng)用的源文件, 可以通過(guò)export導(dǎo)出.
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
鏡像進(jìn)行構(gòu)建
COPY
將package.json
拷貝到容器工作目錄, 描述了項(xiàng)目的依賴, 以及項(xiàng)目啟動(dòng)方式
RUN
執(zhí)行命令npm install --unsafe-perm --no-update-notifier --no-fund --only=production --registry=https://registry.npm.taobao.org
此處為安裝項(xiàng)目的依賴, 該依賴由package.json
描述
ENV
設(shè)置環(huán)境變量NODE_RED_CREDENTIAL_SECRET
為node-red
主要用于解析flows_cred.json
COPY
將flows_cred.json
& flows.json
& settings.js
拷貝到容器/data
下
flows_cred.json
為項(xiàng)目的秘鑰文件, 記錄數(shù)據(jù)庫(kù)連接密碼等敏感數(shù)據(jù)
flows.json
項(xiàng)目源文件.
settings.js
項(xiàng)目的配置文件.
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
描述了容器啟動(dòng)時(shí)執(zhí)行的命令
node node_modules/node-red/red.js /data/flows.json
使用node
執(zhí)行red.js
并把/data/flows.json
作為源文件
構(gòu)建鏡像
docker build . -t iot_edge/services:0.1
與構(gòu)建數(shù)據(jù)庫(kù)鏡像類(lèi)似
啟動(dòng)容器
docker run -itd -p 1880:1880 --name edge_services iot_edge/services:0.1