諸事情により、Node-REDをバージョン指定で複数起動する必要が出たのでメモ。公式 (日本語)
ホスト上でディレクトリを分けて、下準備して npm install --save node-red@0.15.3
と pm2
あたりでもいいんだけど、ホストで動いているものがあり、あまりいじりたくないので、影響少なそうな方法として。
Node-RED の公式リポジトリより git clone
git clone https://github.com/node-red/node-red-docker.git
cd ./node-red-docker
Node-RED のバージョン設定
- package.json 編集
vim ./package.json
- バージョンを 0.15.3 にする。(自己都合)
- "node-red": "0.17.5",
+ "node-red": "0.15.3",
- いらないので削除
- },
+ }
- "engines": {
- "node": "4.*.*"
- }
Node.js のバージョン設定
- Dockerfile 編集
vim ./latest/Dockerfile
- Node バージョンを 4 にする。(自己都合)
- FROM node:6
+ FROM node:4
- 参考: 用意されているDockerfile
- latest
- uses official Node.JS base image.
- slim
- uses Alpine Linux base image.
- Small. Simple. Secure. なLinuxディストリビュージョンベース
- rpi
- uses RPi-compatible base image.
- ラズパイ用
- latest
- 参考: Node のバージョン(2017-11-06 現在)
- v4.8.5 (Latest LTS: Argon)
- v6.11.5 (Latest LTS: Boron)
- v5.12.0
- v7.10.1
- v8.9.0 (Latest LTS: Carbon)
- v9.0.0
docker のイメージファイル作成
- npm WARN でるけど目を瞑る。
sudo docker build -f ./latest/Dockerfile -t mynodered:0.15.3 .
・・・
Successfully built 4304bc2db591
Successfully tagged mynodered:0.15.3
- イメージ確認。
sudo docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
mynodered 0.15.3 4194bb2da581 3 minutes ago 740MB
node 4 ad2b6ed4225e 40 hours ago 656MB
コンテナ起動
- Node-RED のユーザディレクトをホスト側に作成
mkdir ~/mynodered-userdir
chmod 777 ~/mynodered-userdir
- 起動
- ホストのポートを 1881 にしている。(自己都合)
sudo docker run -d -p 1881:1880 -v ~/mynodered-userdir:/data --name mynodered0153 --restart=always -e FLOWS=flows.json mynodered:0.15.3
- コンテナの確認
sudo docker ps
1f701d7614b36c3c2f8d6add03418daf54541a6cdd6fa1e1488288d8f3dd8beb
- ブラウザでアクセス。
- deploy とかしてみる。
http://{hostname}:1881
- ホスト側でユーザディレクトリを確認
ls ~/mynodered-userdir
total 24
-rw-r--r-- 1 1001 1001 44 Nov 6 14:08 flows_cred.json
-rw-r--r-- 1 1001 1001 405 Nov 6 14:08 flows.json
drwxr-xr-x 3 1001 1001 4096 Nov 6 14:02 lib
-rw-r--r-- 1 1001 1001 9044 Nov 6 14:02 settings.js
(docker コマンドメモ)
- コンテナに接続
sudo docker exec -it mynodered0153 bash
- その他
sudo docker ps -a
sudo docker stop <id_or_name> <id_or_name>
sudo docker rm <id_or_name> <id_or_name>
sudo docker images
sudo docker rmi <id> <id>