Azure 研究サイト

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

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

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

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

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

 
LinuxOSの場合、Javaバージョンはメジャーバージョンは選択できますが、マイナーバージョンは指定できないです。
 
指定できないのでマイナーバージョンは、新しいマイナーバージョンに勝手に自動更新が行われるです。  
 
自動更新のタイミングは、事前通知もなく、バッチによって順次リージョンごとに行われ、正確な適用時間はわかりません。

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

docs.microsoft.com

ポータル画面から選択できないバージョンの設定手順

 
サポートしている(利用できる)すべてのバージョンが、ポータル画面から選択できるかと言うとそうではないんです。たとえば、Java7 はまだサポートされている(利用できる)状況ですが、ポータル画面の選択には Java8,11 しか選べません。
 
 
そういう場合は、以下の手順で変更できます。
 
以下に紹介する手順は、WindowsOS・LinuxOS 共通です。Resource Explorer というものを使うのですが、この手順は知らない方も多いのではないでしょうか。是非試してみてください。

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

(1)Resource Explorer (https://resources.azure.com/) へアクセスし、対象サブスクリプションへログイン
(2)上部 [Search] より "Microsoft.Web/site" からアプリを見つける
(3)左部の対象アプリの config > web を選択
(4)[Edit] ボタンを押下して "javaVersion" を "1.7.0_51" へ変更
(5)[PATCH] ボタンを押下  
 

Javaバージョンの確認方法

 
Kuduサイトで java -version とコマンド入力すると、現在アプリケーションに適応中の Java のバージョンが表示される。
(1)Azure ポータル > 該当のAppService > [高度なツール] > [移動] のリンクを押下
(2)Kudu 画面で、上部の [Debug console] > [CMD] を選択
(3)下部のコンソールにて "Java -version" を入力(コマンドプロンプトと同じですね)
 
 

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

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

docs.microsoft.com

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

docs.microsoft.com

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

docs.microsoft.com

 
 

 
以上です。