macOS X で開発環境をセットアップする

Linux クラスターで実行される Azure Service Fabric アプリケーションを macOS X を使用して構築できます。このドキュメントでは、開発用に Mac をセットアップする方法について説明します。

前提条件

Azure Service Fabric は、macOS X ではネイティブに実行されません。ローカルの Service Fabric クラスターを実行できるように、事前に構成済みの Docker コンテナー イメージが用意されています。 以降の手順を開始する前に次の要件を満たしておく必要があります。

ヒント

Mac に Docker をインストールには、Docker のドキュメントの手順に従ってください。 インストール後、Docker Desktop を使用して、リソースの制限ディスク使用率などの環境設定を設定できます。

ローカル コンテナーを作成し、Service Fabric をセットアップする

ローカル Docker コンテナーをセットアップし、そこで Service Fabric クラスターを実行するには、次の手順を実行します。

  1. 以下の設定を使用してホスト上の Docker デーモン構成を更新し、Docker デーモンを再起動します。

    {
        "ipv6": true,
        "fixed-cidr-v6": "fd00::/64"
    }
    

    これらの設定は、Docker インストール パスの daemon.json ファイルで直接更新できます。 Docker でデーモン構成設定を直接変更できます。 Docker アイコンを選択し、 [Preferences](環境設定)>[Daemon](デーモン)>[Advanced](詳細設定) の順に選択します。

    Note

    daemon.json ファイルの場所はマシンによって異なるので、Docker でデーモンを直接変更することをお勧めします。 例: ~/Library/Containers/com.docker.docker/Data/database/com.docker.driver.amd64-linux/etc/docker/daemon.json

    ヒント

    大規模なアプリケーションをテストする際は、Docker に割り当てられたリソースを増やすことをお勧めします。 Docker アイコンを選択し、 [詳細] を選択して、コア数やメモリを調整してください。

  2. クラスターを起動します。

    最新:

    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:latest
    

    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 のページを参照してください。

  3. 省略可能:拡張 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 から構築するには、ターミナルを開き、cdDockerfile の格納ディレクトリに移動して次を実行します。

    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

  4. クラスターが起動するには少し時間がかかります。 実行状態になると、次のコマンドを使用してログを表示したり、ダッシュボードに移動してクラスターの正常性を確認したりすることができます (http://localhost:19080)。

    docker logs sftestcluster
    
  5. コンテナーを停止してクリーンアップするには、次のコマンドを使用します。 ただし、次のステップでこのコンテナーを使用します。

    docker rm -f sftestcluster
    

既知の制限事項

Mac 用のコンテナーで実行されているローカル クラスターの既知の制限は、次のとおりです。

  • DNS サービスは実行されません。現在、コンテナー内ではサポートされていません。 問題 #132
  • コンテナーベースのアプリを実行するには、Linux ホスト上で SF を実行する必要があります。 入れ子になったコンテナー アプリケーションは現在サポートされていません。

Mac に Service Fabric CLI (sfctl) をセットアップする

Service Fabric CLI に関するページの手順に従って、Mac に Service Fabric CLI (sfctl) をインストールしてください。 この CLI コマンドは、クラスター、アプリケーション、サービスなどの Service Fabric エンティティの操作をサポートします。

  1. アプリケーションをデプロイする前にクラスターに接続するには、次のコマンドを実行します。
sfctl cluster select --endpoint http://localhost:19080

Mac 上で Yeoman を使ってアプリケーションを作成する

Service Fabric には、ターミナルから Yeoman テンプレート ジェネレーターを使って Service Fabric アプリケーションを作成するのに役立つスキャフォールディング ツールが用意されています。 以下の手順に従って、ご利用のマシンで Service Fabric Yeoman テンプレート ジェネレーターが実行されていることを確認してください。

  1. Mac に Node.js とノード パッケージ マネージャーがインストールされている必要があります。 このソフトウェアは、次のように HomeBrew を使用してインストールできます。

    brew install node
    node -v
    npm -v
    
  2. ノード パッケージ マネージャーからマシンに Yeoman テンプレート ジェネレーターをインストールします。

    npm install -g yo
    
  3. 概要ドキュメントの手順に従って、使用する Yeoman ジェネレーターをインストールします。 Yeoman を使って Service Fabric アプリケーションを作成するには、次の手順に従います。

    npm install -g generator-azuresfjava       # for Service Fabric Java Applications
    npm install -g generator-azuresfguest      # for Service Fabric Guest executables
    npm install -g generator-azuresfcontainer  # for Service Fabric Container Applications
    
  4. ジェネレーターのインストール後、yo azuresfguest または yo azuresfcontainer を実行して、ゲスト実行可能ファイルまたはコンテナー サービスを作成します。

  5. Service Fabric Java アプリケーションを Mac で構築するには、JDK バージョン 1.8 と Gradle がホスト マシンにインストールされている必要があります。 このソフトウェアは、次のように HomeBrew を使用してインストールできます。

    brew update
    brew cask install java
    brew install gradle
    

    重要

    現在のバージョンの brew cask install java では、より新しいバージョンの JDK がインストールされる場合があります。 必ず JDK 8 をインストールしてください。

ターミナルから Mac にアプリケーションをデプロイする

Service Fabric アプリケーションを作成して構築したら、Service Fabric CLI を使用してアプリケーションをデプロイできます。

  1. Mac のコンテナー インスタンス内で実行されている Service Fabric クラスターに接続します。

    sfctl cluster select --endpoint http://localhost:19080
    
  2. プロジェクト ディレクトリ内で、インストール スクリプトを実行します。

    cd MyProject
    bash install.sh
    

.NET Core 3.1 開発環境を設定する

.NET Core 3.1 SDK for Mac をインストールして、C# Service Fabric アプリケーションの作成を開始します。 .NET Core Service Fabric アプリケーション用のパッケージは、NuGet.org でホストされています。

Eclipse 用の Service Fabric プラグインを Mac にインストールする

Azure Service Fabric には、Java IDE 用として Eclipse Neon (以降) 用のプラグインが用意されています。 このプラグインを使用すると、Java サービスの作成、ビルド、およびデプロイの手順を簡素化できます。 Eclipse 用の Service Fabric プラグインをインストールしたり、最新バージョンに更新したりするには、これらの手順に従います。 Eclipse 用の Service Fabric のドキュメントに記載されている、アプリケーションの構築、アプリケーションへのサービスの追加、アプリケーションのアンインストールなどの他のすべての手順も適用できます。

最後の手順では、ホストと共有されているパスでコンテナーをインスタンス化します。 このプラグインでは、Mac 上の Docker コンテナーを操作するために、この種のインスタンス化が必要です。 次に例を示します。

docker run -itd -p 19080:19080 -v /Users/sayantan/work/workspaces/mySFWorkspace:/tmp/mySFWorkspace --name sfonebox mcr.microsoft.com/service-fabric/onebox:latest

属性は次のように定義されます。

  • /Users/sayantan/work/workspaces/mySFWorkspace は、Mac 上のワークスペースの完全修飾パスです。
  • /tmp/mySFWorkspace は、ワークスペースをマップするコンテナーの内部のパスです。

Note

ワークスペースの名前/パスが異なる場合は、docker run コマンドでこれらの値を更新してください。

sfonebox 以外の名前でコンテナーを開始する場合は、Service Fabric アクター Java アプリケーションの testclient.sh ファイルの名前値を更新してください。

次のステップ