Node-RED Advent Caldendar 2020 12/18の記事です。
Node-REDのフロー管理、どうしていますか?
私はフローファイルをgit管理するように最近なりました。
@high-uさん Node-RED Advent Caldendar 2018記事: Node-RED で git 使ってる?
そしてこれを毎回同じ品質で検証環境を立ち上げたいという主旨で、
もうやってるよ!という方もいらっしゃると思いますが軽くまとめて行こうと思います。
Gitレポジトリの準備
レポジトリは2つにしました。
1つのレポジトリにFlowを置いても良いのですが、今回はNode-REDで動くロボット学習キットのTJBotのVirtual版、VirtualTJBotプロジェクトの派生版で、ローカルで動くVirtualTJBot-starter-containerをサンプルに紹介します。
repository | 説明 |
---|---|
https://github.com/tjbotfan/virtual-tjbot-handson/ | Node-REDプロジェクトのレポジトリ |
https://github.com/tjbotfan/virtual-tjbot-starter-container | DockerFileを置いたレポジトリ |
DockerFileを置いたレポジトリの準備
https://github.com/tjbotfan/virtual-tjbot-starter-containerでは、DockerFileの他にgit submoduleでNode-REDプロジェクのトレポジトリをリンクしています。
submoduleとすることでgit cloneしたときには手元に一緒に中身がダウンロードされるけれど、
git checkout時にはsubmodule内に影響されないという点が便利です。(Node-REDのフローはあくまでも別プロジェクトであり管理は別)
Submoduleと一緒に手元にレポジトリを持ってくるときは
$ git clone --recursive https://github.com/tjbotfan/virtual-tjbot-starter-container
とします。
取得したあとのレポジトリは以下のようになります。
$ cd virtual-tjbot-starter-container/
$ ls -lR
.:
合計 8
-rw-rw-r-- 1 phadmin phadmin 1069 12月 23 02:17 Dockerfile
-rw-rw-r-- 1 phadmin phadmin 196 12月 23 02:17 README.md
drwxrwxr-x 2 phadmin phadmin 112 12月 23 02:18 node-red-settings
./node-red-settings:
合計 44
-rw-rw-r-- 1 phadmin phadmin 228 12月 23 02:18 README.md
-rw-rw-r-- 1 phadmin phadmin 29165 12月 23 02:18 flow.json
-rw-rw-r-- 1 phadmin phadmin 1 12月 23 02:18 flow_cred.json
-rw-rw-r-- 1 phadmin phadmin 1087 12月 23 02:18 package.json
あとはDockerfile上でCOPYを使ってflow.jsonをコピーするようDockerfile内に記述をしておくことで、
docker buildするたびにコンテナはNode-REDレポジトリからFlowを持ってきてくれます。
さいごに
Node-REDというよりもコンテナよりな記事でしたが、
Node-REDフローをプロジェクト化することで、バージョン管理がしやすくコンテナ化するときも便利に使えるということが、
まとまった記事って見かけないなと言うことで書いてみました。
欲を言うと、コンテナで起動したNode-REDからもNode-REDプロジェクトとして参照している状態に出来たらなどとも考えていますが、
これらはおいおいチャレンジして見たいと想います。