AzurePaaS研究サイト

AzurePaaS研究サイト

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

AppServiceのDockerコンテナーにアプリを構築する

 
 
Dockerとは?の説明はすみませんが他のページで学習してきていただきたいですが、
AppServiceでDockerを使用する場合の話をしていきます。

Docker以外の選択肢ってそもそも何があるの?

 
まずAzure上にアプリケーションを構築する方法は3つはありますが、ご存知ですか?
以下に紹介します、すべてメジャーなので覚えてください。
 

IaaS(VM)を使ってすべて手動で構築(1)

 ・VMを作って必要なソフトをインストール(Java・Tomcat・MySQLなど)
 ・プログラムコード開発・デプロイまですべてAzureユーザがやる
 
※ どういう場合にVM上にシステムを構築する必要があるかというと、例えばJavaアプリ内で帳票ソフトを利用してPDFファイルを出力する場合は、アプリが動作するサーバに帳票ソフトがインストールされている必要があるのでVMに帳票ソフトをインストールした上でアプリを実行する必要があると思います。
 

PaaS(Docker)を使って半自動で構築(2)

 ・DockerFileに必要なソフトを指定してAppServiceサーバインストールさせる
 ・プログラムコード開発・デプロイする
 
※ 何かしらの理由でDockerを使いたい場合、このパターンで構築します。
※ DockerFileに指定したソフトはAzureサーバ側でインストールしてくれます。
 

PaaSを使って全自動で構築(3)

 ・AppServiceだけ作ってサーバ構築は全てAzureに任せる
 ・プログラムコード開発・デプロイだけをAzureユーザがやる
 
※ 特に理由がない場合は(3)で問題ありません。最近流行ってるDocker使った方がいいんでしょ?と思う必要はないです。サーバ周りはAzure側に任せることが推奨されてるので堂々とAzureに任せてください。
※ 何かしらの理由がある場合のみ(1)(2)を利用することになるということです。
 
 
当然ですが、(1)が一番めんどうで(3)が一番ラクです。でも何かしら理由があって(1)や(2)を選ぶ必要があるケースがいくつもあるということです。(3)はブラックボックスだから怖い、という理由で(3)を選びたがらないシステム開発者もいます。  
 

AppServiceでどういう場合にDockerを選択するのか

 
AppServiceの新規作成画面で、「コード」または「Dockerコンテナー」のどちらかを選ぶ必須項目があります。
 
 

「コード」を選択

プログラム言語とサーバを選択する必要があります。例えばプログラム言語でJava/Tomcatを選択すると、Azureサーバ上にJava・Tomcatサーバなどが構築されて、デプロイしたアプリがそのAzureサーバ上で動作します。

 

「Dockerコンテナー」を選択

Dockerインスタンス内にプログラム言語・サーバを構築した上でデプロイするため、以下のようにプログラム言語やサーバの選択は不要になります。しかしその分、Azureユーザ自身がDockerFileを作ってすべて構築することになります。


 

Dockerを使用するメリット

 
AppServiceでDockerを使用する際の、代表的なメリットを書きます。
 

Azureがサポートしてないプログラム言語のバージョンでアプリを動かせる

 
極端な例ですが、未だにJava5で実装されているJavaアプリケーションをAppService上にデプロイして実行させたい場合があったとします。
Azureポータル画面のAppServiceのJavaプルダウン選択肢にJava5はないのでJava5のAppServiceは作ることができません。しかし、dockerを使用すればAzureでサポートされていないプログラム言語のバージョン(Java5等)をAppServiceに構築することができます。しかし、バージョンが古いことによるセキュリティ脆弱性などの問題は自己責任になるので注意してください。
 

複数のマイクロサービスを構築・運用できる

 
まず、マイクロサービスとは機能・処理を限定させた小さいアプリケーションのことを指します。最近は、マイクロサービスを複数組み合わせることで一つの大きなシステムを作り上げるというシステム設計をしているプロジェクトが珍しくありません。例えば、アプリAはJava、アプリBはPythonで作るようなことも容易にできます。システム変更のときに影響が小さい・システム拡大がしやすいなどのメリットもあります。
 

AzureにもAWSにも同じDockerリソースで構築できる

 
Dockerについては他の方の記事で学習していただければと思いますが、ローカルPC環境で構築したDocker環境(DockerFileやプログラムファイル)を変えることなく、AzureだけでなくAWSにもデプロイ~アプリケーション実行することができます。
 

学習ページ

 
最後になりますが、Microsoftが用意してくれている無料の学習ページ(AzureLearn)から、試してみてはいかがでしょうか。

learn.microsoft.com

 
実際の手順は別記事で紹介予定ですが、参考サイトを載せておきます。
 

WSL2 でビルドした Docker イメージを Azure Container Registry へ push する - Qiita

 
 
以上です。
 

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