特定のキーワードを含む件名のメールがGmailに届いたらSlackに転送する、Hubotみたいな処理をMQTTブローカーを使って試してみます。publishとsubscrbeはそれぞれDockerコンテナで実装します。MQTTがしゃべれるコネクテッドデバイスならtopicをsubscribeできるので、どちらもメッセージングのブリッジに使えそうです。
Sails.jsの開発をDocker Composeで行いPM2でファイル監視と再起動をする
Sane Stackの動作を理解するために、前回はEmber CLIだけのDocker Composeを作成しました。今度はSails.jsだけ使ったDocker Composeを用意して簡単なアプリを作成してみます。
Kafka in DockerにNode.jsのproducerとconsumerコンテナから接続する
前回作成したKafkaクラスタをテストするために、簡単なNode.jsのproducerとconsumer用のコンテナを作成します。追加コンテナもKafkaとZooKeeperと同じdocker-compose.ymlに含めたかったのですが、うまく動かせませんでした。producerとconsumerのコンテナは通常のdocker runコマンドで起動することにします。
Kafka in Dockerで分散メッセージングシステムを構築する
Apach KafkaはLinkedInで開発された分散メッセージングシステムです。ArduinoからMQTTブローカーにpublishしたセンシングデータをKafkaでconsumeしてからRiemann、Spark Streaming、Stormなどのリアルタイムストリーミング処理が目的です。まずはDockerでKafkaクラスタを構築します。
ArduinoからDHT11の温度と湿度データをMQTTで送信してfreeboardに表示する
ArduinoとDHT11デジタル温度センサーからMeshbluのMQTTブローカーにメッセージをpublishするサンプルを作成しました。またWebブラウザから直接メッセージを取得することもできました。これらを組み合わせてリアルタイムにセンシングデータをモニタリングするダッシュボードをfreeboardで作ってみます。
MeshbluのRESTとMQTTのメッセージをWebブラウザで直接受信する
MeshbluにはWebブラウザで使うmeshblu.jsのJavaScriptライブラリがあります。ArduinoなどからMQTTでpublishしたセンシングデータを通常のWebブラウザ上で受信できるようになります。JavaScriptが使える環境は多いのでコネクテッドデバイス間のメッセージングの選択肢が広がります。
Docker Composeを使ってEmber CLI開発環境を作る
前回Sane Stackの開発環境をDocker Composeで作成しました。Ember CLIの動作がよくわからなかったので今回はEmber CLIだけで環境を用意しようと思います。
Sane Stackを使いEmber.jsとSails.jsアプリをDocker Compose上で開発する
Sane StackはJavaScriptフルスタックのフレームワークとCLIです。MEANが有名ですが、こちらはSails.jsとEmber.jsを採用しています。また開発にDocker Composeを取り入れたワークフローも使えるのが特徴的です。ただしDocker Composeの権限周りの条件がなかなか厳しいです。修正が追いついていないライブラリもあってまだ安定していないようです。
Docker Composeを使ってNginxのSSLリバースプロキシを起動する
Nginxのnginx.confではLuaなどを使わないと環境変数を読み込めません。Dockerのリンクを使う場合はコンテナの起動時に設定された環境変数をsedなどで置換する起動スクリプトを用意してnginx.confを使っていました。Docker Composeのlinksを使うとコンテナの/etc/hostsにエントリを作成してくれます。
Dockerコンテナ上でCLIを実行するデザインパターン
サーバーはDockerコンテナで起動することが多くなりました。サーバーと一緒に使うクライアントもDockerイメージで配布できるとホストマシンの環境も汚さないので便利です。いつくか参考になるDockerfileを見比べながらよいデザインパターンを考えていこうと思います。