Azure App Service で Spring Boot アプリケーションを Linux にデプロイする
このチュートリアルでは、Docker を使用して、Spring Boot アプリケーションをコンテナー化し、Azure App Serviceの Linux ホストに独自の Docker イメージをデプロイする方法について説明します。
前提 条件
このチュートリアルの手順を完了するには、次の前提条件が必要です。
- Azure サブスクリプション。Azure サブスクリプションをまだお持ちでない場合は、MSDN サブスクライバー特典 アクティブ化するか、無料の Azure アカウントにサインアップできます。
- Azure コマンド ライン インターフェイス (CLI)。
- サポートされている Java Development Kit (JDK)。 Azure での開発時に使用できる JDK の詳細については、Azure および Azure Stackでの Java サポート
参照してください。 - Apache Maven ビルド ツール (バージョン 3)
- Git クライアント。
- Docker クライアント。
手記
このチュートリアルの仮想化要件のため、仮想マシンでこの記事の手順に従うことはできません。仮想化機能が有効になっている物理コンピューターを使用する必要があります。
Docker Getting Started Web アプリで Spring Boot を作成する
次の手順では、単純な Spring Boot Web アプリケーションを作成し、ローカルでテストするために必要な手順について説明します。
コマンド プロンプトを開き、アプリケーションを保持するローカル ディレクトリを作成し、そのディレクトリに変更します。例えば:
mkdir SpringBoot cd SpringBoot
Spring Boot を使った Docker Getting Started のサンプルプロジェクトである
を、作成したディレクトリに複製します。例えば: git clone https://github.com/spring-guides/gs-spring-boot-docker.git
完成したプロジェクトにディレクトリを変更します。例えば:
cd gs-spring-boot-docker/complete
Maven を使用して JAR ファイルをビルドします。例えば:
mvn package
Web アプリが作成されたら、JAR ファイルがある
target
ディレクトリにディレクトリを変更し、Web アプリを起動します。例えば:cd target java -jar spring-boot-docker-complete-0.0.1-SNAPSHOT.jar --server.port=80
Web ブラウザーを使用してローカルで Web アプリを参照して、Web アプリをテストします。 たとえば、curl を使用でき、Tomcat サーバーをポート 80 で実行するように構成した場合は、次のようになります。
curl http://localhost
次のメッセージが表示されます。 Hello Docker World
プライベート Docker レジストリとして使用する Azure Container Registry を作成する
次の手順では、Azure portal を使用して Azure Container Registry を作成します。
手記
Azure portal の代わりに Azure CLI を使用する場合は、「azure CLI 2.0を使用してプライベート Docker コンテナー レジストリを作成する
Azure portal に移動し、サインインします。
Azure portal でアカウントにサインインしたら、「Azure portal を使用してプライベート Docker コンテナー レジストリを作成する」の手順に従います。詳細については、次の手順で説明します。
[新規] のメニュー アイコンをクリックして、[コンテナー] を選択し、[Azure Container Registry] を選択します。
を作成する
[コンテナー レジストリの作成] ページが表示されたら、レジストリ名の、サブスクリプション、リソース グループの、および 場所のを入力します。 [作成] を選択します。
設定 で アクセス キー を選択し、管理者ユーザーの背後にある Enabled スイッチをオンにします。
で管理者ユーザー UI を有効にする
Azure Container Registry にイメージをビルドするように Maven を構成する
Spring Boot アプリケーションの完成したプロジェクト ディレクトリ (例: C:\SpringBoot\gs-spring-boot-docker\complete または /users/robert/SpringBoot/gs-spring-boot-docker/complete) に移動し、テキスト エディターで pom.xml ファイルを開きます。
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>
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>
Spring Boot アプリケーションの完成したプロジェクト ディレクトリに移動し、次のコマンドを実行してアプリケーションをリビルドし、コンテナーを Azure Container Registry にプッシュします。
az acr login --name wingtiptoysregistry && mvn compile jib:build
手記
- コマンド
は Azure Container Registry へのログインを試みます。それ以外の場合は、jib-maven-plugin の と を提供する必要があります。jib の認証方法 参照してください。 - Jib を使用してイメージを Azure Container Registry にプッシュしている場合、イメージでは Dockerfile は使用されません。 詳細については、この ドキュメント
参照してください。
コンテナー イメージを使用して Azure App Service 上の Linux 上に Web アプリを作成する
Azure portal に移動し、サインインします。
[リソースの作成] のメニュー アイコンをクリックして、[コンピューティング] を選択し、[Web アプリ] を選択します。
で新しい Web アプリを作成する
Web App on Linux ページが表示されたら、次の情報を入力します。
ドロップダウン リストから サブスクリプション を選択します。
既存の リソース グループを選択するか、新しいリソース グループを作成する名前を指定します。
アプリ名 の一意の名前を入力します。例: wingtiptoyslinuxDocker Container
から を指定し、を発行します。[オペレーティング システムの] フィールドで、[Linux] を選択します。
を選択、リージョン。
[Linux プラン] を受け入れて既存の App Service プランを選択するか、[新規作成] を選択して新しい App Service プランを作成します。
[次へ:Docker] をクリックします。
Web App ページで、Docker選択し、次の情報を入力します。 単一コンテナー を選択します。
レジストリ: コンテナーを選択します。例えば、wingtiptoysregistry。
イメージ: 前に作成したイメージを選択します。たとえば、spring-boot-docker。
タグ : 画像のタグを選択します(例: 最新の)。 スタートアップ コマンドの: イメージには既にスタートアップ コマンドがあるため、空白のままにします
上記の情報をすべて入力したら、[Review + create](レビュー + 作成)を選択します。
[確認と作成] を選択して
- [Review + create](レビュー + 作成) を選択します。
情報を確認し、を選択してを作成します。
デプロイが完了したら、 [リソースに移動] を選択します。 デプロイ ページには、アプリケーションにアクセスするための URL が表示されます。
の URL を取得する
手記
Azure は、ポート 80 で実行されている埋め込み Tomcat サーバーにインターネット要求を自動的にマップします。 ただし、埋め込み Tomcat サーバーをポート 8080 またはカスタム ポートで実行するように構成した場合は、埋め込み Tomcat サーバーのポートを定義する環境変数を Web アプリに追加する必要があります。 これを行うには、次の手順を使用します。
Azure portal に移動し、サインインします。
Web Appsのアイコンを選択し、App Services ページからアプリを選択します。
左側のナビゲーションペインで 構成 を選択します。
[アプリケーション設定 セクションで、WEBSITES_PORT という名前の新しい設定を追加し、値のカスタム ポート番号を入力します。
OK を選択します。 次に、 [保存] を選択します。
でカスタム ポート番号を保存する
リソースのクリーンアップ
不要になったら、azure portal
次の手順
Spring と Azure の詳細については、Spring on Azure ドキュメント センターに進んでください。
関連項目
Azure での Spring Boot アプリケーションの使用の詳細については、次の記事を参照してください。
- Azure Container Service の Kubernetes クラスターに Spring Boot アプリケーションをデプロイする
Java での Azure の使用の詳細については、Java 開発者向け Azure
Docker での Spring Boot サンプル プロジェクトの詳細については、「Docker での Spring Boot の概要」を参照してください。
独自の Spring Boot アプリケーションの使用を開始する方法については、Spring Initializr (https://start.spring.io/) を参照してください。
単純な Spring Boot アプリケーションの作成の概要の詳細については、https://start.spring.io/の Spring Initializr を参照してください。
Azure でカスタム Docker イメージを使用する方法のその他の例については、「Linux上の Azure Web App 用のカスタム Docker イメージを使用する」を参照してください。