次の方法で共有


Spring Boot アプリケーションを Azure App Service の Linux にデプロイする

このチュートリアルでは、Docker を使用してお使いの Spring Boot アプリケーションをコンテナー化し、ご自身の Docker イメージを Azure App Service の Linux ホストにデプロイする手順について説明します。

必須コンポーネント

このチュートリアルの手順を完了するには、次の前提条件を満たす必要があります。

メモ

このチュートリアルには仮想化要件があるため、仮想マシンでこの記事の手順を実行することはできません。仮想化機能を有効にした物理コンピューターを使用する必要があります。

Spring Boot on Docker Getting Started Web アプリを作成する

次の手順では、単純な Spring Boot Web アプリケーションを作成し、それをローカルにテストするために必要な手順について説明します。

  1. コマンド プロンプトを開き、アプリケーションを保持するためのローカル ディレクトリを作成して、そのディレクトリに変更します。次に例を示します。

    mkdir SpringBoot
    cd SpringBoot
    
  2. Spring Boot を使った Docker Getting Started のサンプルプロジェクトである を、作成したディレクトリに複製します。例えば:

    git clone https://github.com/spring-guides/gs-spring-boot-docker.git
    
  3. 完成したプロジェクトにディレクトリを変更します。次に例を示します。

    cd gs-spring-boot-docker/complete
    
  4. Maven を使用して JAR ファイルを構築します。次に例を示します。

    mvn package
    
  5. Web アプリが作成されたら、JAR ファイルがある target ディレクトリにディレクトリを変更し、Web アプリを起動します。次に例を示します。

    cd target
    java -jar spring-boot-docker-complete-0.0.1-SNAPSHOT.jar --server.port=80
    
  6. Web アプリのテストは、Web ブラウザーを使用してアプリをローカルで参照して行います。 たとえば curl が使用でき、Tomcat サーバーをポート 80 で実行されるように構成した場合は、次のようになります。

    curl http://localhost
    
  7. 次のメッセージが表示されます。Hello Docker World

    サンプル アプリをローカルに参照する

Azure Container Registry をプライベート Docker レジストリとして使用するために作成する

次の手順では、Azure portal を使用して Azure Container Registry を作成する方法を説明します。

メモ

Azure Portal ではなく Azure CLI を使用する場合は、「Azure CLI 2.0 を使用したプライベート Docker コンテナー レジストリの作成」の手順に従います。

  1. Azure Portalを参照して、サインインします。

    Azureポータルでアカウントにサインインしたら、「Azureポータルを使用してプライベートDockerコンテナレジストリを作成する」の記事の手順に従ってください。この手順は、便宜上次の手順で説明されています。

  2. [新規] のメニュー アイコンをクリックして、[コンテナー] を選択し、[Azure Container Registry] を選択します。

    Azure Container Registry を新しく作成する を作成する

  3. [コンテナー レジストリの作成] ページが表示されたら、[レジストリ名][サブスクリプション][リソース グループ][場所] を入力します。 [作成] を選択します。

    Azure Container Registry 設定を構成する

  4. [設定][アクセス キー] を選択し、[管理者ユーザー] の後ろの [有効] スイッチをオンにします。

    Azure Portal の管理者ユーザーを有効にする UI で管理者ユーザー UI を有効にする

Azure Container Registry にイメージをビルドするために Maven を構成する

  1. Spring Boot アプリケーションの完成したプロジェクト ディレクトリ (たとえば、C:\SpringBoot\gs-spring-boot-docker\complete または /users/robert/SpringBoot/gs-spring-boot-docker/complete) に移動し、テキスト エディターで pom.xml ファイルを開きます。

  2. pom.xml ファイル内の <properties> コレクションを、最新バージョンの jib-maven-plugin と、このチュートリアルの前のセクションにある Azure Container Registry のログイン サーバー値とアクセス設定で更新します。 次に例を示します。

    <properties>
       <jib-maven-plugin.version>3.2.0</jib-maven-plugin.version>
       <docker.image.prefix>wingtiptoysregistry.azurecr.io</docker.image.prefix>
       <java.version>1.8</java.version>
    </properties>
    
  3. pom.xml ファイルの <plugins> コレクションに jib-maven-plugin を追加します。 この例では、バージョン 3.2.0 を使用します。

    <from>/<image> に基本イメージを指定します。ここでは mcr.microsoft.com/openjdk/jdk:11-ubuntu です。 基本イメージからビルドする最終イメージの名前を <to>/<image> に指定します。

    認証 {docker.image.prefix} は、前に示したレジストリ ページのログイン サーバーです。 {project.artifactId} は、プロジェクトの最初の Maven ビルドに由来する JAR ファイルの名前とバージョン番号です。

    <plugin>
      <artifactId>jib-maven-plugin</artifactId>
      <groupId>com.google.cloud.tools</groupId>
      <version>${jib-maven-plugin.version}</version>
      <configuration>
         <from>
             <image>mcr.microsoft.com/openjdk/jdk:11-ubuntu</image>
         </from>
         <to>
             <image>${docker.image.prefix}/${project.artifactId}</image>
         </to>
      </configuration>
    </plugin>
    
  4. Spring Boot アプリケーション用の完了プロジェクト ディレクトリに移動し、次のコマンドを実行してアプリケーションをリビルドし、コンテナーを Azure Container Registry にプッシュします。

    az acr login --name wingtiptoysregistry && mvn compile jib:build
    

メモ

  1. コマンドaz acr login ...はAzure Container Registryへのログインを試みます。そうでない場合は、Jib-maven-pluginに<username><password>を指定する必要があります。jibの認証方法を参照してください。
  2. Jib を使用してイメージを Azure Container Registry にプッシュしている場合、イメージでは Dockerfile は使用されません。 詳細については、こちらのドキュメントを参照してください。

コンテナー イメージを使用して Azure App Service で Linux に Web アプリを作成する

  1. Azure Portalを参照して、サインインします。

  2. [リソースの作成] のメニュー アイコンをクリックして、[コンピューティング] を選択し、[Web アプリ] を選択します。

    Azure ポータルで Web アプリを新しく作成する で新しい Web アプリを作成する

  3. [Web App on Linux] ページが表示されたら、次の情報を入力します。

    • [サブスクリプション] ボックスの一覧で、サブスクリプションを選択します。

    • [リソース グループ] ボックスの一覧で、既存のリソース グループを選択するか、新しいリソース グループの名前を指定して作成します。

    • アプリ名に、たとえば wingtiptoyslinux などの固有の名前を入力します。

    • Docker Container から を指定し、を発行します。

    • [オペレーティング システムの] フィールドで、[Linux] を選択します。

    • を選択、リージョン

    • [Linux プラン] を受け入れて既存の App Service プランを選択するか、[新規作成] を選択して新しい App Service プランを作成します。

    • [次へ:Docker] をクリックします。

    [Next: Docker] をクリックして続行します。

    [Web アプリ] ページで、\[Docker\] を選択し、次の情報を入力します。

    • 単一コンテナー を選択します。

    • レジストリ: コンテナーを選択します。例えば、wingtiptoysregistry

    • イメージ: 前に作成したイメージを選択します。たとえば、spring-boot-docker

    • タグ: たとえば latest など、イメージのタグを選択します。

    • 起動コマンド: イメージにはすでに起動コマンドがあるため、空白のままにしておきます

    上記の情報をすべて入力したら、[Review + create](レビュー + 作成)を選択します。

    [確認と作成] を選択して を完了します。

    • [Review + create](レビュー + 作成) を選択します。

情報を確認し、を選択してを作成します。

デプロイが完了したら、 [リソースに移動] を選択します。 デプロイ ページには、アプリケーションにアクセスするための URL が表示されます。

デプロイの URL を取得する の URL を取得する

メモ

Azure により、ポート 80 で実行されている埋め込みの Tomcat サーバーにインターネットの要求が自動的にマップされます。 ただし、埋め込みの Tomcat サーバーをポート 8080 またはカスタム ポートで実行するように構成している場合は、埋め込みの Tomcat サーバーのポートを定義する環境変数を Web アプリに追加する必要があります。 そのためには、次の手順を実行してください。

  1. Azure Portalを参照して、サインインします。

  2. [Web Apps] のアイコンを選択し、[App Services] ページからアプリを選択します。

  3. 左側のナビゲーションペインで 構成 を選択します。

  4. [アプリケーション設定] セクションで、WEBSITES_PORT という名前の新しい設定を追加して、この値にカスタム ポート番号を入力します。

  5. OK を選択します。 次に、 [保存] を選択します。

Azure Portal でのカスタム ポート番号の保存 でカスタム ポート番号を保存する

リソースをクリーンアップする

予想外の課金を防ぐために、この記事で作成したリソースが不要になったら、Azure portal を使用して削除してください。

次のステップ

Spring および Azure の詳細については、Azure ドキュメント センターで引き続き Spring に関するドキュメントをご確認ください。

関連項目

Azure での Spring Boot アプリケーションの使用の詳細については、次の記事を参照してください。

Java での Azure の使用の詳細については、「Java 開発者向けの Azure」および「Azure DevOps と Java の操作」を参照してください。

Docker サンプル プロジェクトでの Spring Boot の詳細については、Docker での Spring Boot の使用開始に関するページを参照してください。

独自の Spring Boot アプリケーションの使用開始に関するヘルプについては、「Spring Initializr」(https://start.spring.io/) を参照してください。

単純な Spring Boot アプリケーションの作成開始の詳細については、「Spring Initializr」(https://start.spring.io/) を参照してください。

Azure でカスタム Docker イメージを使用する方法に関するその他の例については、「Azure Web App on Linux 向けのカスタム Docker イメージを使用する」を参照してください。