LoginSignup
1

More than 1 year has passed since last update.

posted at

updated at

Organization

Node-REDなコンテナをワンタッチビルドするためのレポジトリの構造

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プロジェクトとして参照している状態に出来たらなどとも考えていますが、
これらはおいおいチャレンジして見たいと想います。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
1