Spring Boot JAR ファイルの Web アプリを Linux 用の Azure App Service にデプロイするDeploy a Spring Boot JAR file web app to Azure App Service on Linux

この記事では、Azure App Service Web Apps 用の Maven プラグインを使用して、Java SE JAR としてパッケージ化された Spring Boot アプリケーションを Linux の Azure App Services にデプロイする方法について説明します。This article demonstrates using the Maven Plugin for Azure App Service Web Apps to deploy a Spring Boot application packaged as a Java SE JAR to Azure App Service on Linux. アプリの依存関係、ランタイム、構成を 1 つのデプロイ可能な成果物に統合する必要がある場合は、Tomcat および WAR ファイルでの Java SE デプロイを選択してください。Choose Java SE deployment over Tomcat and WAR files when you want to consolidate your app's dependencies, runtime, and configuration into a single deployable artifact.

Azure サブスクリプションがない場合は、開始する前に無料アカウントを作成してください。If you don’t have an Azure subscription, create a free account before you begin.

前提条件Prerequisites

このチュートリアルの手順を完了するには、次をインストールして構成する必要があります。To complete the steps in this tutorial, you'll need to have the following installed and configured:

Azure CLI のインストールとサインインInstall and sign in to Azure CLI

Maven プラグインで最もシンプルかつ容易に Spring Boot アプリケーションをデプロイするには、Azure CLI を使用します。The simplest and easiest way to get the Maven Plugin deploying your Spring Boot application is by using Azure CLI.

Azure CLI を使って、Azure アカウントにサインインします。Sign into your Azure account by using the Azure CLI:

az login

指示に従って、サインインを完了します。Follow the instructions to complete the sign-in process.

サンプル アプリの複製Clone the sample app

このセクションでは、完成した Spring Boot アプリケーションを複製し、ローカルでテストします。In this section, you will clone a completed Spring Boot application and test it locally.

  1. コマンド プロンプトまたはターミナル ウィンドウを開き、Spring Boot アプリケーションを保持するためのローカル ディレクトリを作成して、次の例のようにそのディレクトリに移動します。Open a command prompt or terminal window and create a local directory to hold your Spring Boot application, and change to that directory; for example:

    md C:\SpringBoot
    cd C:\SpringBoot
    

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

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

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

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

    mvn clean package
    
  5. Web アプリを作成したら、次の例のように Maven を使って Web アプリを起動します。When the web app has been created, start the web app using Maven; for example:

    mvn spring-boot:run
    
  6. Web アプリのテストは、Web ブラウザーを使用してアプリをローカルで参照して行います。Test the web app by browsing to it locally using a web browser. たとえば、curl を使うことができる場合は次のようなコマンドを実行できます。For example, you could use the following command if you have curl available:

    curl http://localhost:8080
    
  7. 次のメッセージが表示されます。Greetings from Spring Boot!You should see the following message displayed: Greetings from Spring Boot!

Azure App Service 用の Maven プラグインを構成するConfigure Maven Plugin for Azure App Service

このセクションでは、Maven でアプリを Linux 上の Azure App Service にデプロイできるように、Spring Boot プロジェクト pom.xml を構成します。In this section, you will configure the Spring Boot project pom.xml so that Maven can deploy the app to Azure App Service on Linux.

  1. コード エディターで pom.xml を開きます。Open pom.xml in a code editor.

  2. pom.xml の <build> セクションで、<plugins> タグ内に次の <plugin> エントリを追加します。In the <build> section of the pom.xml, add the following <plugin> entry inside the <plugins> tag.

    <plugin>
     <groupId>com.microsoft.azure</groupId>
     <artifactId>azure-webapp-maven-plugin</artifactId>
     <version>1.6.0</version>
    </plugin>
    
  3. 次にデプロイを構成し、コマンド プロンプトで maven コマンド mvn azure-webapp:config を実行して、数字を使用してプロンプトで以下のオプションを選択できます。Then you can configure the deployment, run the maven command mvn azure-webapp:config in the Command Prompt and use the number to choose these options in the prompt:

    • OS: linuxOS: linux
    • javaVersion: jre8javaVersion: jre8
    • runtimeStack: jre8runtimeStack: jre8

Confirm (Y/N) のプロンプトが表示されたら、 'y' を押すと構成が終了します。When you get the Confirm (Y/N) prompt, press 'y' and the configuration is done.

~@Azure:~/gs-spring-boot/complete$ mvn azure-webapp:config
[INFO] Scanning for projects...
[INFO]
[INFO] -----------------< org.springframework:gs-spring-boot >-----------------
[INFO] Building gs-spring-boot 0.1.0
[INFO] --------------------------------[ jar ]---------------------------------
[INFO]
[INFO] --- azure-webapp-maven-plugin:1.6.0:config (default-cli) @ gs-spring-boot ---
[WARNING] The plugin may not work if you change the os of an existing webapp.
Define value for OS(Default: Linux):
1. linux [*]
2. windows
3. docker
Enter index to use:
Define value for javaVersion(Default: jre8):
1. jre8 [*]
2. java11
Enter index to use:
Define value for runtimeStack(Default: TOMCAT 8.5):
1. TOMCAT 9.0
2. jre8
3. TOMCAT 8.5 [*]
4. WILDFLY 14
Enter index to use: 2
Please confirm webapp properties
AppName : gs-spring-boot-1559091271202
ResourceGroup : gs-spring-boot-1559091271202-rg
Region : westeurope
PricingTier : Premium_P1V2
OS : Linux
RuntimeStack : JAVA 8-jre8
Deploy to slot : false
Confirm (Y/N)? : Y
  1. <appSettings> セクションを <azure-webapp-maven-plugin><configuration> セクションに追加して、80 のポートでリッスンするようにします。Add the <appSettings> section to the <configuration> section of <azure-webapp-maven-plugin> to listen on the 80 port.

    <plugin>
       <groupId>com.microsoft.azure</groupId>
       <artifactId>azure-webapp-maven-plugin</artifactId>
       <version>1.6.0</version>
       <configuration>
          <schemaVersion>V2</schemaVersion>
          <resourceGroup>gs-spring-boot-1559091271202-rg</resourceGroup>
          <appName>gs-spring-boot-1559091271202</appName>
          <region>westeurope</region>
          <pricingTier>P1V2</pricingTier>
    
          <!-- Begin of App Settings  -->
          <appSettings>
             <property>
                   <name>JAVA_OPTS</name>
                   <value>-Dserver.port=80</value>
             </property>
          </appSettings>
          <!-- End of App Settings  -->
          ...
         </configuration>
    </plugin>
    

Azure にアプリケーションをデプロイするDeploy the app to Azure

この記事の前のセクションで説明した設定をすべて構成した後、Azure に Web アプリをデプロイします。Once you have configured all of the settings in the preceding sections of this article, you are ready to deploy your web app to Azure. そのためには、次の手順を実行してください。To do so, use the following steps:

  1. pom.xml ファイルを変更する場合は、以前使っていたコマンド プロンプトまたはターミナル ウィンドウで、次の例のように Maven を使って JAR ファイルをリビルドします。From the command prompt or terminal window that you were using earlier, rebuild the JAR file using Maven if you made any changes to the pom.xml file; for example:

    mvn clean package
    
  2. Maven を使って次の例のように Azure に Web アプリをデプロイします。Deploy your web app to Azure by using Maven; for example:

    mvn azure-webapp:deploy
    

Maven によって、ご自身の Web アプリが Azure にデプロイされます。Web アプリまたは Web アプリ プランが存在しない場合は、Maven によって新たに作成されます。Maven will deploy your web app to Azure; if the web app or web app plan does not already exist, it will be created for you.

Web アプリのデプロイが完了すると、Azure portal で Web アプリを管理できるようになります。When your web has been deployed, you will be able to manage it through the Azure portal.

  • Web アプリは App Services に一覧表示されます。Your web app will be listed in App Services:

    Azure Portal の App Services に一覧表示される Web アプリ

  • Web アプリの URL は、Web アプリの [概要] に一覧表示されます。And the URL for your web app will be listed in the Overview for your web app:

    Web アプリの URL の決定

前と同じ cURL コマンドを使用して、localhost ではなくポータルからご自身の Web アプリ URL を使って、デプロイが適切に行われたことを確認します。Verify that the deployment was successful by using the same cURL command as before, using your web app URL from the Portal instead of localhost. 次のメッセージが表示されます。Greetings from Spring Boot!You should see the following message displayed: Greetings from Spring Boot!

次の手順Next steps

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

その他のリソースAdditional Resources

この記事で説明しているさまざまなテクノロジの詳細については、次の記事をご覧ください。For more information about the various technologies discussed in this article, see the following articles: