AzurePaaS研究サイト

~理解しずらい情報をシンプルにお伝えします~

AppService(Windows,Linux)のJavaバージョンとJavaマイナーバージョンの指定・自動更新・固定化をまとめた

 

 
AppService/Functions で Javaアプリケーションを開発・運用する際には、Javaのバージョン設定を意識する必要があります。

 
オンプレ環境サーバではないので、Azureの仕組みを理解していないと、知らぬ間に Azure側のJavaバージョンがあがってしまっていた!などが発生する可能性があります。
 
 
 


 
   
WindowsOS と LinuxOS とで、ポータル画面の動作が違うので、分けて説明していきます。
 
 

WebApp(Windows) の Javaバージョン・Javaマイナーバージョンについて

 
WindowsOS の場合、全般設定タブでJavaバージョン・Javaマイナーバージョンの両方が設定可能です。
 
 
Javaマイナーバージョンのポイントは、Java11(自動更新)と書かれてるものを選んだら、マイナーバージョンは自動更新されます。
f:id:nanacy7741:20210415022103p:plain  
 
勝手に更新されたくなければ、マイナーバージョンが書かれているJava11.0.7などを選択すれば自動更新されずにバージョン固定できます。
f:id:nanacy7741:20210415022318p:plain

WebAppforLinux の Javaバージョンについて

 
LinuxOS の場合、Javaバージョンはメジャーバージョンを指定できますが、マイナーバージョンは指定できません。

指定できないのでマイナーバージョンは、新しいマイナーバージョンに(勝手に)自動更新が行われます。

自動更新のタイミングは、事前通知がないと聞いたことがあります。バッチによって順次リージョンごとに行われ、正確な適用時間も把握することは難しいと思います。

 

ポータル画面から選択できないバージョンに設定できる方法

 
サポートしている(利用できる)すべてのバージョンを、ポータル画面で指定できるようにはなっていません。たとえば、Java7 はまだサポートされている(利用できる)状況ですが、ポータル画面の選択には Java8,11 しか選べません。
 
 
 


 
ポータル画面で指定できない場合は、以下の手順で指定できます。
(知られていない情報です)

 
 
以下に紹介する手順は、WindowsOS のみ利用可能です。Resource Explorer というものを使うのですが、この手順は知らない方も多いのではないでしょうか。是非試してみてください。

ポータル画面で選択できないバージョンの設定方法

任意のバージョン設定方法

 

STEP
Resource Explorer にアクセス
Resource Explorer (https://resources.azure.com/) へアクセスして、ログイン操作
STEP
以下を参考に web ページまで開く
ー subscriptions
  f:id:nanacy7741:20210415020230p:plain
 ー <<該当サブスクリプション>>
 ーー resourceGroups
 ーー <<該当リソースグループ>>
 ーーー Microsoft.Web
 ーーー sites
 ーーー <<該当 App Service/Functions>>
 ーーーー config
 ーーーー web
  f:id:nanacy7741:20210415023159p:plain
STEP
[Edit] ボタンを押下して "javaVersion" を "11.0.8" へ変更
  f:id:nanacy7741:20210415023109p:plain
STEP
変更を保存
[PATCH] ボタンを押下
STEP
アプリを再起動
該当 AppService > 概要 > 再起動 を実行

 
Resource Explorer の参考サイト貼っておきます。
Tip 25 - Use the Azure Resource Explorer to quickly explore REST APIs | Azure Tips and Tricks  
 

Javaバージョンの確認方法

 
ご自身の Java アプリケーションが Azure 上でどのバージョンで動作しているか、以下の方法で確認できます。
Kudu サイトで java -version コマンドで、現在アプリケーションに適応中の Java のバージョンが表示されます。
 

Java バージョンの確認方法

 

STEP
Kudu サイトを開く
Azure ポータル > 該当のAppService > [高度なツール] > [移動] のリンクを押下
STEP
コンソールを開く
Kudu 画面で、上部の [Debug console] > [CMD] を選択
STEP
コマンドで確認
下部のコンソールにて "Java -version" を入力(コマンドプロンプトと同じですね)
  f:id:nanacy7741:20210415024526p:plain

 
 

App Service でサポートされている Java バージョンは公式ドキュメントで見れます

 
最後になりますが、サポートされている(利用可能な)Javaバージョンは、以下の公式ドキュメントから確認できます。

docs.microsoft.com
===== 抜粋 ここから =====

f:id:nanacy7741:20210515140055p:plain

===== 抜粋 ここまで =====

 
 

WebAppforLinux で任意の Javaマイナーバージョン を使用する方法

 
LinuxOS の場合、先述したとおり、Javaマイナーバージョンは指定できずに自動更新されてしまいます。LinuxOS で Java バージョン指定したい場合は、カスタムコンテナを使用する必要があります。
 
 
ざっくりとした流れとしては、以下をやっていくと、指定した Java のマイナーバージョン を WebAppforLinux で使用できます。
 
(1)WebAppforLinux のカスタムコンテナを作成する
(2)DockerHub から指定の Java バージョンのイメージをカスタムコンテナにプルする
     
 
以下にカスタムコンテナに関する、公式ドキュメントを載せておきますね。
 
カスタムコンテナ実行方法

docs.microsoft.com

 
AzureAppService のカスタムLinuxコンテナ構成方法

docs.microsoft.com

 
AzureAppService のコンテナイメージのプル(格納)を行う方法

docs.microsoft.com

 
 

皆さまの疑問は解消されたでしょうか。
もし不明点あれば、コメントに記載いただければと思います。
 
以上です。
 

ご意見・ご要望はこちらへ