コンテナー用 Azure App Service で Spring Boot アプリケーションをデプロイするDeploy a Spring Boot application on Azure App Service for Container

このチュートリアルでは、Docker を使用してお使いの Spring Boot アプリケーションをコンテナー化し、ご自身の Docker イメージを Azure App Service の Linux ホストにデプロイする手順について説明します。This tutorial walks you through using Docker to containerize your Spring Boot application and deploy your own docker image to a Linux host in the Azure App Service.

前提条件Prerequisites

このチュートリアルの手順を完了するには、次の前提条件を満たす必要があります。In order to complete the steps in this tutorial, you need to have the following prerequisites:

注意

このチュートリアルには仮想化要件があるため、仮想マシンでこの記事の手順を実行することはできません。仮想化機能を有効にした物理コンピューターを使用する必要があります。Due to the virtualization requirements of this tutorial, you cannot follow the steps in this article on a virtual machine; you must use a physical computer with virtualization features enabled.

最初に使用する Docker での Spring Boot Web アプリを作成するCreate the Spring Boot on Docker Getting Started web app

次の手順では、単純な Spring Boot Web アプリケーションを作成し、それをローカルにテストするために必要な手順について説明します。The following steps walk you through the steps that are required to create a simple Spring Boot web application and test it locally.

  1. コマンド プロンプトを開き、アプリケーションを保持するためのローカル ディレクトリを作成して、そのディレクトリに変更します。次に例を示します。Open a command-prompt and create a local directory to hold your application, and change to that directory; for example:

    md C:\SpringBoot
    cd C:\SpringBoot
    

    -- または ---- or --

    md /users/robert/SpringBoot
    cd /users/robert/SpringBoot
    
  2. Docker での Spring Boot の使用開始のサンプル プロジェクトを今作成したディレクトリに複製します。次に例を示します。Clone the Spring Boot on Docker Getting Started sample project into the directory you created; for example:

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

    cd gs-spring-boot-docker/complete
    
  4. Maven を使用して JAR ファイルを構築します。次に例を示します。Build the JAR file using Maven; for example:

    mvn package
    
  5. Web アプリが作成されたら、JAR ファイルがある target ディレクトリにディレクトリを変更し、Web アプリを起動します。次に例を示します。Once the web app has been created, change directory to the target directory where the JAR file is located and start the web app; for example:

    cd target
    java -jar gs-spring-boot-docker-0.1.0.jar --server.port=80
    
  6. Web アプリのテストは、Web ブラウザーを使用してアプリをローカルで参照して行います。Test the web app by browsing to it locally using a web browser. たとえば curl が使用でき、Tomcat サーバーをポート 80 で実行されるように構成した場合は、次のようになります。For example, if you have curl available and you configured the Tomcat server to run on port 80:

    curl http://localhost
    
  7. 次のメッセージが表示されます。Hello Docker WorldYou should see the following message displayed: Hello Docker World

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

Azure Container Registry をプライベート Docker レジストリとして使用するために作成するCreate an Azure Container Registry to use as a Private Docker Registry

Azure Portal を使用して Azure Container Registry を作成する手順を説明します。The following steps walk you through using the Azure portal to create an Azure Container Registry.

注意

Azure Portal ではなく Azure CLI を使用する場合は、「Azure CLI 2.0 を使用したプライベート Docker コンテナー レジストリの作成」の手順に従います。If you want to use the Azure CLI instead of the Azure portal, follow the steps in Create a private Docker container registry using the Azure CLI 2.0.

  1. Azure Portalを参照して、サインインします。Browse to the Azure portal and sign in.

    Azure Portal のアカウントにサインインしたら、「Azure Portal を使用したプライベート Docker コンテナー レジストリの作成」の記事の手順に従います。便宜上、この手順を改めて以下で説明します。Once you have signed in to your account on the Azure portal, you can follow the steps in the Create a private Docker container registry using the Azure portal article, which are paraphrased in the following steps for the sake of expediency.

  2. [+ 新規] のメニュー アイコン、 [コンテナー][Azure Container Registry] の順にクリックします。Click the menu icon for + New, then click Containers, and then click Azure Container Registry.

    Azure Container Registry を新しく作成する

  3. Azure Container Registry テンプレートの情報ページが表示されたら、 [作成] をクリックします。When the information page for the Azure Container Registry template is displayed, click Create.

    Azure Container Registry を新しく作成する

  4. [コンテナー レジストリの作成] ページが表示されたら、 [レジストリ名][リソース グループ] を入力し、 [管理ユーザー] に対して [有効化] を選択した後、 [作成] をクリックします。When the Create container registry page is displayed, enter your Registry name and Resource group, choose Enable for the Admin user, and then click Create.

    Azure Container Registry 設定を構成する

  5. コンテナー レジストリが作成されたら、Azure Portal でコンテナー レジストリに移動して、 [アクセス キー] をクリックします。Once your container registry has been created, navigate to your container registry in the Azure portal, and then click Access Keys. 次の手順で使用するため、ユーザー名とパスワードをメモします。Take note of the username and password for the next steps.

    Azure Container Registry のアクセス キー

Azure Container Registry のアクセス キーを使用するために Maven を構成するConfigure Maven to use your Azure Container Registry access keys

  1. Spring Boot アプリケーションの完了プロジェクト ディレクトリ ("C:\SpringBoot\gs-spring-boot-docker\complete" や " /users/robert/SpringBoot/gs-spring-boot-docker/complete" など) に移動し、pom.xml ファイルをテキスト エディターで開きます。Navigate to the completed project directory for your Spring Boot application, (for example: "C:\SpringBoot\gs-spring-boot-docker\complete" or "/users/robert/SpringBoot/gs-spring-boot-docker/complete"), and open the pom.xml file with a text editor.

  2. pom.xml ファイル内の <properties> コレクションを、最新バージョンの jib-maven-plugin と、このチュートリアルの前のセクションにある Azure Container Registry のログイン サーバー値とアクセス設定で更新します。Update the <properties> collection in the pom.xml file with the latest version of jib-maven-plugin and login server value and access settings for your Azure Container Registry from the previous section of this tutorial. 例:For example:

    <properties>
       <jib-maven-plugin.version>1.7.0</jib-maven-plugin.version>
       <docker.image.prefix>wingtiptoysregistry.azurecr.io</docker.image.prefix>
       <java.version>1.8</java.version>
       <username>wingtiptoysregistry</username>
       <password>{put your Azure Container Registry access key here}</password>
    </properties>
    
  3. pom.xml ファイル内の <plugins> コレクションに jib-maven-plugin を追加し、基本イメージを <from>/<image> で指定し、最終イメージ名を <to>/<image> で指定し、前のセクションにあるユーザー名とパスワードを <to>/<auth> で指定します。Add jib-maven-plugin to the <plugins> collection in the pom.xml file, specify the base image at <from>/<image> and final image name <to>/<image>, specify the username and password from previous section at <to>/<auth>. 例:For example:

    <plugin>
      <artifactId>jib-maven-plugin</artifactId>
      <groupId>com.google.cloud.tools</groupId>
      <version>${jib-maven-plugin.version}</version>
      <configuration>
         <from>
             <image>openjdk:8-jre-alpine</image>
         </from>
         <to>
             <image>${docker.image.prefix}/${project.artifactId}</image>
             <auth>
                <username>${username}</username>
                <password>${password}</password>
             </auth>
         </to>
      </configuration>
    </plugin>
    
  4. Spring Boot アプリケーション用の完了プロジェクト ディレクトリに移動し、次のコマンドを実行してアプリケーションをリビルドし、コンテナーを Azure Container Registry にプッシュします。Navigate to the completed project directory for your Spring Boot application and run the following command to rebuild the application and push the container to your Azure Container Registry:

    mvn compile jib:build
    

注意

Jib を使ってイメージを Azure Container Registry にプッシュする場合、イメージは Dockerfile を受け付けません。詳細については、こちらのドキュメントをご覧ください。When you are using Jib to push your image to the Azure Container Registry, the image will not honor Dockerfile, see this document for details.

コンテナー イメージを使用して Azure App Service で Linux に Web アプリを作成するCreate a web app on Linux on Azure App Service using your container image

  1. Azure Portalを参照して、サインインします。Browse to the Azure portal and sign in.

  2. [+ リソースの作成] のメニュー アイコンをクリックし、 [Web][Web App for Containers] の順にクリックします。Click the menu icon for + Create a resource, then click Web, and then click Web App for Containers.

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

  3. [Web App on Linux] ページが表示されたら、次の情報を入力します。When the Web App on Linux page is displayed, enter the following information:

    a.a. [App name](アプリ名) に一意の名前 ("wingtiptoyslinux" など) を入力します。Enter a unique name for the App name; for example: "wingtiptoyslinux"

    b.b. [サブスクリプション] ボックスの一覧で、サブスクリプションを選択します。Choose your Subscription from the drop-down list.

    c.c. [リソース グループ] ボックスの一覧で、既存のリソース グループを選択するか、新しいリソース グループの名前を指定して作成します。Choose an existing Resource Group, or specify a name to create a new resource group.

    d.d. [OS] として [Linux] を選択します。Choose Linux as the OS.

    e.e. [App Service プラン/場所] をクリックして既存の App Service プランを選択するか、 [新規作成] をクリックして新しい App Service プランを作成します。Click App Service plan/Location and choose an existing app service plan, or click Create new to create a new app service plan.

    f.f. [コンテナーの構成] をクリックして、次の情報を入力します。Click Configure container and enter the following information:

    • [単一コンテナー][Azure Container Registry] を選択します。Choose Single Container and Azure Container Registry.

    • レジストリ:先に作成したコンテナー名 ("wingtiptoysregistry" など) を選択します。Registry: Choose your container name created earlier; for example: "wingtiptoysregistry"

    • イメージ:イメージ名 ("gs-spring-boot-docker" など) を選択します。Image: Choose the image name; for example: "gs-spring-boot-docker"

    • タグ: イメージのタグ ("latest" など) を選択します。Tag: Choose the tag for the image; for example: "latest"

    • スタートアップ ファイル:イメージには既にスタートアップ コマンドがあるため、これは空白のままにしておきますStartup File: Keep it blank since the image already has the start up command

    e.e. 上記の情報をすべて入力したら、 [適用] をクリックします。Once you have entered all of the above information, click Apply.

    Web アプリの設定を構成する

  4. Create をクリックしてください。Click Create.

注意

Azure は、80 または 8080 の標準のポートで実行されている埋め込みの Tomcat サーバーにインターネットの要求を自動的にマップします。Azure will automatically map Internet requests to embedded Tomcat server that is running on the standard ports of 80 or 8080. ただし、埋め込みの Tomcat サーバーをカスタム ポートで実行するように構成している場合は、埋め込みの Tomcat サーバーのポートを定義する環境変数を Web アプリに追加する必要があります。However, if you configured your embedded Tomcat server to run on a custom port, you need to add an environment variable to your web app that defines the port for your embedded Tomcat server. そのためには、次の手順を実行してください。To do so, use the following steps:

  1. Azure Portalを参照して、サインインします。Browse to the Azure portal and sign in.

  2. App Services のアイコンをクリックし、一覧から Web アプリを選択します。Click the icon for App Services, and select your web app from the list.

  3. [構成] をクリックします。Click Configuration. (下の図の項目 #1 を参照。)(Item #1 in the image below.)

  4. [アプリケーション設定] セクションで、PORT という名前の新しい設定を追加して、この値にカスタム ポート番号を入力します。In the Application settings section, add a new setting named PORT and enter your custom port number for the value. (下の図の項目 #2、#3、#4 を参照。)(Item #2, #3, #4 in the image below.)

  5. [Save] をクリックします。Click Save. (下の図の項目 #5 を参照。)(Item #5 in the image below.)

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

次の手順Next steps

Spring および Azure の詳細については、Azure ドキュメント センターで引き続き Spring に関するドキュメントをご確認ください。To learn more about Spring and Azure, continue to the Spring on Azure documentation center.

その他のリソースAdditional Resources

Azure での Spring Boot アプリケーションの使用の詳細については、次の記事を参照してください。For more information about using Spring Boot applications on Azure, see the following articles:

Java での Azure の使用の詳細については、「Java 開発者向けの Azure」および「Azure DevOps と Java の操作」を参照してください。For more information about using Azure with Java, see the Azure for Java Developers and the Working with Azure DevOps and Java.

Docker サンプル プロジェクトでの Spring Boot の詳細については、Docker での Spring Boot の使用開始に関するページを参照してください。For further details about the Spring Boot on Docker sample project, see Spring Boot on Docker Getting Started.

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

単純な Spring Boot アプリケーションの作成開始の詳細については、「Spring Initializr」(https://start.spring.io/ ) を参照してください。For more information about getting started with creating a simple Spring Boot application, see the Spring Initializr at https://start.spring.io/.

Azure でカスタム Docker イメージを使用する方法に関するその他の例については、「Azure Web App on Linux 向けのカスタム Docker イメージを使用する」を参照してください。For additional examples for how to use custom Docker images with Azure, see Using a custom Docker image for Azure Web App on Linux.