新入社員が全体研修を終えて仮配属にくる時期が近づいてきました。新人さんにJavaやAzureを学んでもらうとき、自分だったら何を勧めるかな?と考えたところ「Microsoft Learn」が頭に浮かびました。
と言いながらも私自身実際に試したことがなかったので「Azure 上の Java の概要」をやってみました。
手を動かす部分は「サンプル Java アプリのデプロイ」で、Spring BootのWebアプリケーションをAzureにデプロイする内容となっています。
ローカル環境での実行
今回、私が試した環境は以下のとおりです。最近はローカル環境に何もインストールしてなくて、Docker+Remote Containerを利用しています。OSはWindows 10とmacOS両方試して同じように動きました。
使用したdockerfileは以下のとおりです。
FROM maven:3.8.1-openjdk-11
RUN curl -sL https://aka.ms/InstallAzureCLIDeb | bash
Dockerのイメージはmavenのものを使いました。デプロイの際に必要なAzure CLIを入れてます。
では具体的な手順を紹介していきます。dockerfileをVSCodeで開いたら、画面左下をクリックして、Reopen in Containerを選びます。しばらくするとコンテナ内の環境に変わります。
このあとは「サンプル Java アプリのデプロイ」のとおりです。まずはGitでサンプルアプリをクローンします。
git clone https://github.com/spring-projects/spring-petclinic.git
続いて以下のコマンドでパッケージングします。
./mvnw package
このコマンドはコンテナ環境だと以下のエラーになりました。原因を調べるとmavenのイメージで使っている環境変数(MAVEN_CONFIG)が重複して起こる問題のようです。
[ERROR] Unknown lifecycle phase "/root/.m2".
以下のコマンドで解決しました。
mvn clean install
実行して画面が表示されればOKです。
java -jar target/*.jar
Azureでの実行
続いてサンプルアプリをAzureにデプロイします。Learnの手順ではいきなりazure-webapp-maven-pluginのコマンドを実行していますが、以下のエラーになりました。
[ERROR] Failed to execute goal com.microsoft.azure:azure-webapp-maven-plugin:1.13.0:config (default-cli) on project spring-petclinic: Cannot find any subscriptions in current account. -> [Help 1]
先にAzure CLIでログインする必要があるようです。
az login
ログインした後に以下を実行します。
mvn com.microsoft.azure:azure-webapp-maven-plugin:1.13.0:config
成功するとAzureで構築する環境構成を聞かれるので回答します。その結果、pom.xmlにAzureデプロイ用の定義が自動的に追加されます。
最後は以下のコマンドでデプロイします。
mvn package com.microsoft.azure:azure-webapp-maven-plugin:1.13.0:deploy
しばらく待つと無事Azureにデプロイできました!
今回はコンテナ環境で試したため、一部手順に違いがあります。でもこうやってMicrosoft Learnを使って学習することは基本的な知識や操作を覚える上で役に立ちそうです。このまま先のコンテンツもトライしてみたいと思います。