这篇文章介绍一下如何使用Node-RED的官方镜像。
拉取镜像
使用如下命令拉取官方镜像:
拉取普通版本镜像:docker pull nodered/node-red:版本号
或者
拉取简化版镜像:docker pull nodered/node-red:版本号-minimal
- 以1.0.4的普通版本为例,拉取命令执行示例如下所示
liumiaocn:~ liumiao$ docker pull nodered/node-red:1.0.4
1.0.4: Pulling from nodered/node-red
..省略
Digest: sha256:be27cf89f0d8491f21ad53236834085c549f8fa75457ed9e695582e1ec141096
Status: Downloaded newer image for nodered/node-red:1.0.4
docker.io/nodered/node-red:1.0.4
liumiaocn:~ liumiao$
- 镜像确认
liumiaocn:~ liumiao$ docker images |grep nodered
nodered/node-red 1.0.4 37f21089d3eb 32 hours ago 448MB
liumiaocn:~ liumiao$
注:还有一些其他版本的比如ARM和CPU的位数不同,可根据需要进行相应版本的镜像下载。
环境变量
环境变量名称 | 环境变量设定内容 | 环境变量说明 |
---|---|---|
FLOWS | 设定的JSON文件 | 用于指定设定,为空时使用settings.js的设定内容 |
NODE_RED_ENABLE_SAFE_MODE | true或false | 设定安全模式开启或者关闭 |
NODE_RED_ENABLE_PROJECTS | true或false | 设定项目特性开启或者关闭 |
NODE_OPTIONS | 运行时参数设定 | 用于调整运行态的设定,比如可以通过指定max_old_space_size来修改Node.js垃圾收集设定中堆的大小 |
TZ | 时区设定 | 用于设定容器的时区,比如通过TZ=Asia/Shanghai来设定为CST时区 |
数据卷
数据卷说明 | 镜像内路径 |
---|---|
数据或者配置信息的卷 | /data |
注意事项:从0.2版本升级至1.0之后的版本需要注意权限的问题,可对数据目录使用chown -R 1000:1000 命令来解决相关问题。
liumiaocn:nodered liumiao$ docker exec -it nodered_node-red_1 sh
~ $ id
uid=1000(node-red) gid=1000(node-red)
~ $
启动容器
使用如下命令即可启动Node-RED的容器
执行命令:docker run -it -p 1880:1880 --name nodered nodered/node-red:1.0.4
liumiaocn:~ liumiao$ docker run -it -p 1880:1880 -e TZ=Asia/Shanghai --name nodered nodered/node-red:1.0.4
> [email protected] start /usr/src/node-red
> node $NODE_OPTIONS node_modules/node-red/red.js $FLOWS "--userDir" "/data"
5 Mar 09:14:17 - [info]
Welcome to Node-RED
===================
5 Mar 09:14:17 - [info] Node-RED version: v1.0.4
5 Mar 09:14:17 - [info] Node.js version: v10.19.0
5 Mar 09:14:17 - [info] Linux 4.9.184-linuxkit x64 LE
5 Mar 09:14:17 - [info] Loading palette nodes
5 Mar 09:14:18 - [info] Settings file : /data/settings.js
5 Mar 09:14:18 - [info] Context store : 'default' [module=memory]
5 Mar 09:14:18 - [info] User directory : /data
5 Mar 09:14:18 - [warn] Projects disabled : editorTheme.projects.enabled=false
5 Mar 09:14:18 - [info] Flows file : /data/flows.json
5 Mar 09:14:18 - [info] Creating new flow file
5 Mar 09:14:18 - [warn]
---------------------------------------------------------------------
Your flow credentials file is encrypted using a system-generated key.
If the system-generated key is lost for any reason, your credentials
file will not be recoverable, you will have to delete it and re-enter
your credentials.
You should set your own key using the 'credentialSecret' option in
your settings file. Node-RED will then re-encrypt your credentials
file using your chosen key the next time you deploy a change.
---------------------------------------------------------------------
5 Mar 09:14:18 - [info] Server now running at http://127.0.0.1:1880/
5 Mar 09:14:18 - [info] Starting flows
5 Mar 09:14:18 - [info] Started flows
- 结果确认
Docker-Compose方式
也可以使用Docker-Compose方式启动Node-RED,可以使用如下示例yaml文件:
liumiaocn:nodered liumiao$ cat docker-compose.yml
version: "2"
services:
node-red:
image: nodered/node-red:1.0.4
environment:
- TZ=Asia/Shanghai
ports:
- "1880:1880"
networks:
- node-red-net
volumes:
- node-red-data
volumes:
node-red-data:
networks:
node-red-net:
liumiaocn:nodered liumiao$
- 启动服务
liumiaocn:nodered liumiao$ docker-compose up -d
Creating network "nodered_node-red-net" with the default driver
Creating volume "nodered_node-red-data" with default driver
Creating nodered_node-red_1 ... done
liumiaocn:nodered liumiao$
- 服务确认
liumiaocn:nodered liumiao$ docker-compose ps
Name Command State Ports
-----------------------------------------------------------------------------------------
nodered_node-red_1 npm start -- --userDir /data Up (healthy) 0.0.0.0:1880->1880/tcp
liumiaocn:nodered liumiao$
参考内容
https://nodered.org/docs/getting-started/docker