Node.jsでつくるIoTのサーバーサイドにNode-REDを使います。MQTTからメッセージを取得してMongoDBに保存する処理をワイヤリングします。IoTプラットフォームはDockerコンテナで構築していきます。
google/nodejs-runtimeのDockerイメージ
google/nodejs-runtimeを使う場合の前提条件は以下です。
- package.jsonがあること
- エントリーポイントのserver.jsまたは、package.jsonにscriptsの記述があること
- アプリのportは8080でlistenしていること
Node-REDのGitHubリポジトリ
Node-REDのリポジトリを確認して、google/nodejs-runtimeの仕様にあわせます。
package.jsonにエントリーポイントの指定があります。
... |
エントリーポイントのred.jsを見ると、設定ファイルはデフォルトでカレントディレクトリのsettings.jsを参照しています。
... |
settings.jsのポート指定は1880なのでEXPOSEに追加します。
... |
Dockerfileのビルド
Node-REDをgit clone
します。
$ cd ~/docker_apps |
Dockerfileを作成して、docker build
を実行します。
$ cat << 'EOF' > Dockerfile |
コンテナの起動
使い捨てのコンテナを起動して、1880ポートをDockerホストにマップします。
$ docker run --rm --name node-red -p 1880:1880 node-red |
ブラウザで動作確認をします。