Windows 開発用マシンで Linux Service Fabric クラスターを設定する
このドキュメントでは、Windows 開発用マシン上でローカル Linux Service Fabric クラスターを設定する方法について説明します。 ローカル Linux クラスターを設定すると、Linux クラスターを対象としているが、Windows マシンで開発されたアプリケーションをすばやくテストするときに便利です。
前提条件
Linux ベースの Service Fabric クラスターは Windows 上では実行されませんが、クロスプラットフォームでのプロトタイプ作成を可能にするために、Linux Service Fabric ワンボックス クラスター Docker コンテナーを用意してあります。これは Docker for Windows を介してデプロイすることができます。
作業を開始する前に、以下を行う必要があります。
- 少なくとも 4 GB の RAM
- Docker for Windows の最新バージョン
- Docker は Linux コンテナー モードで実行する必要があります
ヒント
ご利用の Windows コンピューターに Docker をインストールには、Docker のドキュメントの手順に従ってください。 インストールの完了後、インストールを確認します。
ローカル コンテナーを作成し、Service Fabric をセットアップする
ローカル Docker コンテナーを設定し、そこで Service Fabric クラスターを実行するには、次の手順を行います。
ホスト上の Docker デーモン構成を以下を使用して更新し、Docker デーモンを再起動します。
{ "ipv6": true, "fixed-cidr-v6": "2001:db8:1::/64" }
更新するには、次の順に移動することをお勧めします。
- [Docker] アイコン > [設定] > [Docker エンジン]
- 上にリストされた新しいフィールドを追加する
- 適用して再起動 - Docker デーモンを再起動し、変更を反映させます。
PowerShell を介してクラスターを起動します。
Ubuntu 20.04 LTS:docker run --name sftestcluster -d -v /var/run/docker.sock:/var/run/docker.sock -p 19080:19080 -p 19000:19000 -p 25100-25200:25100-25200 mcr.microsoft.com/service-fabric/onebox:u20
Ubuntu 18.04 LTS:
docker run --name sftestcluster -d -v /var/run/docker.sock:/var/run/docker.sock -p 19080:19080 -p 19000:19000 -p 25100-25200:25100-25200 mcr.microsoft.com/service-fabric/onebox:u18
ヒント
既定では、最新バージョンの Service Fabric を含んだイメージがプルされます。 特定のリビジョンについては、Docker Hub の Service Fabric Onebox ページを参照してください。
省略可能: 拡張 Service Fabric イメージをビルドします。
新しいディレクトリに、
Dockerfile
という名前のファイルを作成して、カスタマイズしたイメージをビルドします。Note
Dockerfile を使用して上記のイメージを調整すれば、さらにプログラムまたは依存関係をコンテナーに追加することができます。 たとえば、「
RUN apt-get install nodejs -y
」を追加すれば、ゲスト実行可能ファイルとしてnodejs
アプリケーションに対応することができます。FROM mcr.microsoft.com/service-fabric/onebox:u18 RUN apt-get install nodejs -y EXPOSE 19080 19000 80 443 WORKDIR /home/ClusterDeployer CMD ["./ClusterDeployer.sh"]
ヒント
既定では、最新バージョンの Service Fabric を含んだイメージがプルされます。 特定のリビジョンについては、Docker Hub のページをご覧ください。
再利用可能なイメージを
Dockerfile
から構築するには、ターミナルを開き、cd
でDockerfile
の格納場所に移動して次を実行します。docker build -t mysfcluster .
Note
この操作にはしばらく時間がかかりますが、実行するのは 1 回でかまいません。
これで、Service Fabric のローカル コピーを、必要なときにいつでも、次を実行することですぐに起動することができます。
docker run --name sftestcluster -d -v /var/run/docker.sock:/var/run/docker.sock -p 19080:19080 -p 19000:19000 -p 25100-25200:25100-25200 mysfcluster
ヒント
操作の際にわかりやすくするために、コンテナー インスタンスの名前を指定します。
アプリケーションが特定のポートでリッスンしている場合は、追加の
-p
タグを使用してポートを指定する必要があります。 たとえば、アプリケーションがポート 8080 でリッスンしている場合は、次の-p
タグを追加します。docker run -itd -p 19000:19000 -p 19080:19080 -p 8080:8080 --name sfonebox mcr.microsoft.com/service-fabric/onebox:u18
少しするとクラスターが起動され、次のコマンドを使ってログを確認したり、ダッシュボードに切り替えてクラスターの正常性を確認したりすることができます (
http://localhost:19080
)。docker logs sftestcluster
手順 4 で確認したとおりにクラスターが正常にデプロイされたら、Windows コンピューターから
http://localhost:19080
にアクセスして、Service Fabric Explorer ダッシュボードを見つけることができます。 この時点で、Windows 開発者用マシンからツールを使用してこのクラスターに接続し、Linux Service Fabric クラスターを対象としたアプリケーションを配置します。Note
Eclipse プラグインは、現在、Windows でサポートされていません。
完了したら、コンテナーを停止し、次のコマンドを使用してコンテナーをクリーンアップします。
docker rm -f sftestcluster
既知の制限事項
Mac 用のコンテナーで実行されているローカル クラスターの既知の制限は、次のとおりです。
- DNS サービスは実行されません。現在、コンテナー内ではサポートされていません。 問題 #132
- コンテナーベースのアプリを実行するには、Linux ホスト上で SF を実行する必要があります。 入れ子になったコンテナー アプリケーションは現在サポートされていません。