このチュートリアルでは、Docker を使用して Spring Boot アプリケーションをコンテナー化し、Azure App Serviceの Linux ホストに独自の Docker イメージをデプロイする方法について説明します。
必須コンポーネント
このチュートリアルの手順を完了するには、次の前提条件が必要です。
- Azure サブスクリプション。Azure サブスクリプションをお持ちでない場合は、MSDN サブスクライバー特典をアクティブ化するか、無料のAzure アカウントにサインアップしてください。
- Azure コマンド ライン インターフェイス (CLI)。
- サポートされている Java Development Kit (JDK)。 Azure での開発時に使用可能な JDK の詳細については、「Java の Azure および Azure Stack に関するサポート」 を参照してください。
- Apache Maven ビルド ツール (バージョン 3)
- Git クライアント。
- Docker クライアント。
メモ
このチュートリアルの仮想化要件のため、仮想マシンでこの記事の手順に従うことはできません。 仮想化機能が有効になっている物理コンピューターを使用する必要があります。
Spring Boot on Docker Getting Started Web アプリを作成する
次の手順では、単純な Spring Boot Web アプリケーションを作成し、それをローカルにテストするために必要な手順について説明します。
コマンド プロンプトを開き、アプリケーションを保持するローカル ディレクトリを作成し、そのディレクトリに変更します。例:
mkdir SpringBoot cd SpringBootSpring Boot を使った Docker Getting Started のサンプルプロジェクトである
を、作成したディレクトリに複製します。例えば: git clone https://github.com/spring-guides/gs-spring-boot-docker.git完成したプロジェクトにディレクトリを変更します。次に例を示します。
cd gs-spring-boot-docker/completeMaven を使用して JAR ファイルを構築します。次に例を示します。
mvn packageWeb アプリが作成されたら、JAR ファイルがある
targetディレクトリにディレクトリを変更し、Web アプリを起動します。次に例を示します。cd target java -jar spring-boot-docker-complete-0.0.1-SNAPSHOT.jar --server.port=80Web アプリのテストは、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 ポータルでアカウントにサインインした後、Azure ポータルを使用したプライベート Docker コンテナー レジストリの作成に関する記事の手順に従います。 次の手順では、便宜上、これらの命令を言い換えます。
[新規] のメニュー アイコンを選択し、[コンテナー] を選択し、Azure Container Registryを選択します。
を作成する[ コンテナー レジストリの作成 ] ページが表示されたら、 レジストリ名、 サブスクリプション、 リソース グループ、および 場所を入力します。 [作成] を選択します。
[設定] で [アクセス キー] を選択し、管理者ユーザーの [有効] スイッチをオンにします。
で管理者ユーザー 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ファイルの
jib-maven-pluginコレクションに<plugins>を追加します。 この例では、バージョン 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
メモ
このコマンドaz acr login ...Azure Container Registryへのサインインを試みます。 それ以外の場合は、<password> に jib-maven-plugin と <username> を指定する必要があります。 詳細については、「jib の 認証方法」を 参照してください。
Jib を使用してイメージをAzure Container Registryにプッシュする場合、イメージでは Dockerfile は使用されません。 詳細については、 この記事 を参照してください。
コンテナー イメージを使用して Azure App Service 上の Linux 上に Web アプリを作成する
Azure Portalを参照して、サインインします。
[ リソースの作成] のメニュー アイコンを選択し、[ コンピューティング] を選択して、[ Web アプリ] を選択します。
で新しい Web アプリを作成する[Web App on Linux] ページが表示されたら、次の情報を入力します。
[サブスクリプション] ボックスの一覧で、サブスクリプションを選択します。
[リソース グループ] ボックスの一覧で、既存のリソース グループを選択するか、新しいリソース グループの名前を指定して作成します。
アプリ名の一意の 名前を入力します。例: wingtiptoyslinux。
Docker Containerから を指定し、を発行します。[オペレーティング システムの] フィールドで、[Linux] を選択します。
を選択、リージョン。
[Linux プラン] を受け入れて既存の App Service プランを選択するか、[新規作成] を選択して新しい App Service プランを作成します。
[次へ: Docker] を選択します。
[Web アプリ] ページで、\[Docker\] を選択し、次の情報を入力します。
単一コンテナー を選択します。
レジストリ: コンテナーを選択します。例えば、wingtiptoysregistry。
イメージ: 前に作成したイメージを選択します。たとえば、spring-boot-docker。
タグ: たとえば latest など、イメージのタグを選択します。
スタートアップ コマンド: イメージには既にスタートアップ コマンドがあるため、空白のままにします。
上記の情報をすべて入力したら、[ 確認と作成] を選択します。
[確認と作成] を選択して

- [確認と作成] を選択します。
情報を確認し、を選択してを作成します。
デプロイが完了したら、[リソースに移動] を選択します。 デプロイ ページには、アプリケーションにアクセスするための URL が表示されます。
の URL を取得する
メモ
Azureは、インターネット要求を、ポート 80 で実行される埋め込み Tomcat サーバーに自動的にマップします。 ただし、埋め込み Tomcat サーバーをポート 8080 またはカスタム ポートで実行するように構成する場合は、埋め込み Tomcat サーバーのポートを定義する環境変数を Web アプリに追加する必要があります。 環境変数を追加するには、次の手順に従います。
Azure Portalを参照して、サインインします。
[Web Apps] のアイコンを選択し、[App Services] ページからアプリを選択します。
左側のナビゲーションペインで 構成 を選択します。
[アプリケーション設定] セクションで、WEBSITES_PORT という名前の新しい設定を追加して、この値にカスタム ポート番号を入力します。
[OK]を選択します。 次に、 [保存] を選択します。
でカスタム ポート番号を保存する
リソースをクリーンアップする
リソースが不要になったら、Azure ポータルを使用してリソースを削除します。 リソースを削除すると、予期しない料金を回避するのに役立ちます。
次のステップ
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 イメージの使用」を参照してください。