AppService/FunctionsでJavaアプリケーションを開発・運用する際には、Javaのバージョン設定を意識する必要があります。オンプレ環境サーバではないので、Azureの仕組みを理解していないと、知らぬ間にAzure側のJavaバージョンがあがってしまっていた!などが発生する可能性があります。
WindowsOSとLinuxOSとで、ポータル画面の動作が違うので、分けて説明していきます。
WebApp(Windows)の avaバージョン・Javaマイナーバージョンについて
WindowsOSの場合、全般設定タブでJavaバージョン・Javaマイナーバージョンの両方が設定可能です。
Javaマイナーバージョンのポイントは、Java11(自動更新)と書かれてるものを選んだら、マイナーバージョンは自動更新されます。
勝手に更新されたくなければ、マイナーバージョンが書かれているJava11.0.7などを選択すれば自動更新されずにバージョン固定できます。
WebAppforLinuxのJavaバージョンについて
LinuxOSの場合、Javaバージョンはメジャーバージョンを指定できますが、マイナーバージョンは指定できません。指定できないのでマイナーバージョンは、新しいマイナーバージョンに(勝手に)自動更新が行われます。
自動更新のタイミングは、事前通知がないと聞いたことがあります。バッチによって順次リージョンごとに行われ、正確な適用時間も把握することは難しいと思います。
ポータル画面から選択できないバージョンに設定できる方法
サポートしている(利用できる)すべてのバージョンを、ポータル画面で指定できるようにはなっていません。たとえば、Java7 はまだサポートされている(利用できる)状況ですが、ポータル画面の選択には Java8,11 しか選べません。
ポータル画面で指定できない場合は、以下の手順で指定できます。(知られていない情報)
以下に紹介する手順は、WindowsOSのみ利用可能です。ResourceExplorerというものを使うのですが、この手順は知らない方も多いのではないでしょうか。是非試してみてください。
ポータル画面で選択できないバージョンの設定方法
任意のバージョン設定方法
■ ResourceExplorerにアクセス
ResourceExplorer(https://resources.azure.com/)へアクセスして、ログイン操作
■ 以下を参考にwebページまで開く
ー subscriptions
ー <<該当サブスクリプション>>
ーー resourceGroups
ーー <<該当リソースグループ>>
ーーー Microsoft.Web
ーーー sites
ーーー <<該当 App Service/Functions>>
ーーーー config
ーーーー web
■ [Edit] ボタンを押下して "javaVersion" を "11.0.8" へ変更
■ 変更を保存
[PATCH] ボタンを押下
■ アプリを再起動
該当 AppService > 概要 > 再起動 を実行
ResourceExplorerの参考サイト貼っておきます。
https://microsoft.github.io/AzureTipsAndTricks/blog/tip25.html
Javaバージョンの確認方法
ご自身のJavaアプリケーションがAzure上でどのバージョンで動作しているか、以下の方法で確認できます。
Kuduサイト java -versionコマンドで、現在アプリケーションに適応中のJavaのバージョンが表示されます。
Javaバージョンの確認方法
AppServiceでサポートされているJavaバージョンは公式ドキュメントで見れます
最後になりますが、サポートされている(利用可能な)Javaバージョンは、以下の公式ドキュメントから確認できます。
※ 以前は上記の内容が書かれていたのですが、ページ内容が変更されてしまったようです。
(2021年9月現在)
WebAppforLinuxで任意のJavaマイナーバージョンを使用する方法
LinuxOSの場合、先述したとおり、Javaマイナーバージョンは指定できずに自動更新されてしまいます。LinuxOSでJavaバージョン指定したい場合は、カスタムコンテナを使用する必要があります。
ざっくりとした流れとしては、以下をやっていくと、指定したJavaのマイナーバージョンをWebAppforLinuxで使用できます。
(1)WebAppforLinuxのカスタムコンテナを作成する
(2)DockerHubから指定のJavaバージョンのイメージをカスタムコンテナにプルする
以下にカスタムコンテナに関する、公式ドキュメントを載せておきますね。
カスタムコンテナ実行方法
AzureAppServiceのカスタムLinuxコンテナ構成方法
AzureAppServiceのコンテナイメージのプル(格納)を行う方法
皆さまの疑問は解消されたでしょうか。
もし不明点あれば、コメントに記載いただければと思います。
以上です。