マイクロサービスをカスタマイズして再展開する
このチュートリアルでは、リモート監視ソリューションの マイクロサービス の 1 つを編集し、マイクロサービスのイメージを構築し、Docker ハブにイメージをデプロイしてから、リモート監視ソリューションで使用する方法について説明します。 この概念を説明するため、このチュートリアルでは、マイクロサービス API を呼び出して状態メッセージを "Alive and Well" から "New Edits Made Here!" に変更する基本的なシナリオを使います。
リモート監視ソリューションでは、Docker ハブからプルされた Docker イメージを使用して構築されたマイクロサービスを使用します。
このチュートリアルでは、以下の内容を学習します。
- リモート監視ソリューションでマイクロサービスを編集してビルドします
- Docker イメージをビルドします
- Docker イメージを Docker Hub にプッシュします
- 新しい Docker イメージをプルします
- 変更を視覚化します
前提条件
このチュートリアルを実行するには、次が必要です。
- リモート監視ソリューション アクセラレータをローカルでデプロイする
- Docker アカウント
- Postman - API の応答を表示するために必要です
API を呼び出して応答の状態を表示する
ここでは、既定の IoT ハブ マネージャー マイクロサービス API を呼び出します。 API は、後でマイクロサービスをカスタマイズすることにより変更する状態メッセージを返します。
お使いのコンピューターでリモート監視ソリューションがローカルに実行していることを確認してください。
ダウンロードした Postman を探して開きます。
Postman で、[GET] に「
https://localhost:8080/iothubmanager/v1/status
」と入力します。返される値では、"Status": "OK:Alive and Well" と表示されます。
状態を変更して、イメージをビルドします。
次に、Iot Hub Manager マイクロサービスのステータス メッセージを "New Edits Made Here!" に変更し、この新しい状態で Docker イメージを再構築します。 ここで問題が発生する場合は、「トラブルシューティング」セクションをご覧ください。
ターミナルが開いていることを確認し、リモート監視ソリューションを複製したディレクトリに移動します。
ディレクトリを、"azure-iot-pcs-remote-monitoring-dotnet/services/iothub-manager/Services" に変更します。
好みのテキスト エディターまたは IDE で、StatusService.cs を開きます。
次のコードを見つけます。
var result = new StatusServiceModel(true, "Alive and well!");
これを次のコードに変更して、保存します。
var result = new StatusServiceModel(true, "New Edits Made Here!");
ターミナルに戻り、今度は "azure-iot-pcs-remote-monitoring-dotnet/services/iothub-manager/scripts/docker" ディレクトリに変更します。
新しい Docker イメージをビルドするには、次のように入力します。
sh build
または、Windows では:
./build.cmd
新しいイメージが正常に作成されたことを確認するには、次のように入力します。
docker images
リポジトリは、"azureiotpcs/iothub-manager-dotnet" にする必要があります。
イメージにタグを付けてプッシュする
新しい Docker イメージを Docker Hub にプッシュする前に、イメージにタグを付ける必要があります。 ここで問題が発生する場合は、「トラブルシューティング」セクションをご覧ください。
次のように入力して、作成した Docker イメージのイメージ ID を調べます。
docker images
イメージに "testing" というタグを付けるには、次のように入力します。
docker tag [Image ID] [docker ID]/iothub-manager-dotnet:testing
新しくタグを付けたイメージを Docker Hub にプッシュするには、次のように入力します。
docker push [docker ID]/iothub-manager-dotnet:testing
インターネット ブラウザーを開き、Docker Hub に移動して、サインインします。
新しくプッシュした Docker イメージが Docker Hub に表示されます。
リモート監視ソリューションを更新する
次に、ローカルの docker-compose.yml を更新し、新しい Docker イメージを Docker Hub からプルする必要があります。 ここで問題が発生する場合は、「トラブルシューティング」セクションをご覧ください。
ターミナルに戻り、"azure-iot-pcs-remote-monitoring-dotnet/services/scripts/local" ディレクトリに変更します。
好みのテキスト エディターまたは IDE で、docker-compose.yml を開きます。
次のコードを見つけます。
image: azureiotpcs/iothub-manager-dotnet:testing
これを次の図のように変更して、変更します。
image: [docker ID]/iothub-manager-dotnet:testing
新しい応答状態を表示する
最後に、リモート監視ソリューションのローカル インスタンスを再展開し、Postman で新しい状態応答を表示します。
ターミナルに戻り、"azure-iot-pcs-remote-monitoring-dotnet/scripts/local" ディレクトリに変更します。
ターミナルに次のコマンドを入力して、リモート監視ソリューションのローカル インスタンスを起動します。
docker-compose up
ダウンロードした Postman を探して開きます。
Postman で、[GET] に「
https://localhost:8080/iothubmanager/v1/status
」という要求を入力します。 今度は、"Status": "OK: New Edits Made Here!" と表示されます。
トラブルシューティング
問題が発生する場合は、ローカル コンピューター上の Docker イメージとコンテナーを削除してみてください。
すべてのコンテナーを削除するには、まず実行中のすべてのコンテナーを停止する必要があります。 ターミナルを開き、次のように入力します。
docker stop $(docker ps -aq) docker rm $(docker ps -aq)
すべてのイメージを削除するには、ターミナルを開いて次のように入力します。
docker rmi $(docker images -q)
コンピューター上にコンテナーがあるかどうかは、次のように入力して確認できます。
docker ps -aq
すべてのイメージが正常に削除されている場合は、何も表示されません。
コンピューター上にイメージがあるかどうかは、次のように入力して確認できます。
docker images
すべてのイメージが正常に削除されている場合は、何も表示されません。
次の手順
このチュートリアルで説明する内容は次のとおりです。
- リモート監視ソリューションでマイクロサービスを編集してビルドします
- Docker イメージをビルドします
- Docker イメージを Docker Hub にプッシュします
- 新しい Docker イメージをプルします
- 変更を視覚化します
次に、リモート監視ソリューションのデバイス シミュレーター マイクロサービスをカスタマイズしてみてください
リモート監視ソリューションに関する開発者向け情報の詳細については、以下をご覧ください。