このチュートリアル シリーズでは、Python Web アプリをコンテナー化し、ローカルで実行するか 、Azure App Service にデプロイする方法について説明します。 App Service Web App for Containers を使用すると、基になるコンテナー オーケストレーターの管理と保守について心配することなく、コンテナーの構築に集中できます。 Web アプリを構築する場合、Azure App Serviceはコンテナーを使用して最初の手順を実行する場合に適したオプションです。 このコンテナー Web アプリでは、ローカルの MongoDB インスタンスまたは Azure DocumentDB (MongoDB 互換性あり) を使用してデータを格納できます。 Azure でのコンテナーの使用の詳細については、「Azure コンテナー オプションの比較」を参照してください。
このチュートリアルでは、次の操作を行います。
Docker コンテナーをローカルでビルドして実行します。 コンテナー化された Python Web アプリをローカルでビルドして実行する方法に関するページを参照してください。
Docker コンテナー イメージを Azure で直接ビルドします。 Azure でのコンテナー化された Python Web アプリの構築に関するページを参照してください。
Docker コンテナー イメージに基づいて Web アプリを作成するように App Service を構成します。 コンテナー化された Python アプリを App Service にデプロイするを参照してください。
このチュートリアル シリーズの記事を完了すると、AzureするPython Web アプリの継続的インテグレーション (CI) と継続的配置 (CD) の基礎が得られます。
サービスの概要
このチュートリアルをサポートするサービス図は、開発者環境と Azure 環境の 2 つの環境を示しています。 開発プロセスで使用される主要な Azure サービスが強調表示されています。
開発者環境
このチュートリアルの開発環境には、次のコンポーネントが含まれています。
ローカル開発システム: Docker コンテナーのコーディング、ビルド、テストに使用されるパーソナル コンピューター。
Docker コンテナー化: Docker は、アプリとその依存関係をポータブル コンテナーにパッケージ化するために使用されます。
開発ツール: コード エディターと、ソフトウェア開発に必要なその他のツール。
ローカル MongoDB インスタンス: 開発中にデータ ストレージに使用されるローカル MongoDB データベース。
MongoDB 接続: ローカル MongoDB データベースへのアクセスを提供する接続文字列。
Azure 環境
このチュートリアルのAzure環境をサポートするコンポーネントは次のとおりです。
-
- Azure App Serviceでは、Web App for Containers は Docker コンテナー テクノロジを使用して、Docker を使用して組み込みのイメージとカスタム イメージの両方にコンテナー ホスティングを提供します。
- Web App for Containers では、Azure Container Registry (ACR) の Webhook を使用して、新しいイメージの通知を受け取ります。 新しいイメージをレジストリにプッシュすると、Webhook 通知によって App Service がトリガーされ、更新プログラムがプルされ、アプリが再起動されます。
Azure Container Registry
Azure Container Registry を使用すると、Docker イメージとそのコンポーネントを Azure に格納および管理できます。 Azureのデプロイの近くに存在するレジストリが用意されており、Microsoft Entra グループとアクセス許可を使用してアクセスを制御できます。
このチュートリアルでは、Azure Container Registry がレジストリ ソースですが、Docker Hub またはプライベート レジストリをマイナーな変更で使用することもできます。
Azure DocumentDB (MongoDB との互換性あり)
Azure DocumentDB は、このチュートリアルでデータ ストレージに使用される MongoDB 互換データベースです。
コンテナー化されたアプリケーションは、環境変数として格納してアプリに提供する接続文字列を使用して、Azure DocumentDB リソースに接続してアクセスします。
認証
このチュートリアルでは、ローカルまたは Azure で Docker イメージをビルドし、それを Azure App Service にデプロイします。 App Service は、Azure Container Registry リポジトリからコンテナー イメージをプルします。
リポジトリからイメージを安全にプルするために、App Service ではシステム割り当てマネージド ID が使用されます。 このマネージド ID は、他のAzure リソースと対話するためのアクセス許可を Web アプリに付与するため、明示的な資格情報は必要ありません。 このチュートリアルでは、App Service のセットアップ時にレジストリ コンテナー イメージを使用するようにマネージド ID を構成します。
チュートリアルのサンプル Web アプリでは、MongoDB を使用してデータを格納します。 サンプル コードは、接続文字列を介して Azure DocumentDB に接続します。
前提 条件
このチュートリアルを完了するには、次のものが必要です。
作成できる Azure アカウント:
- Azure Container Registry
- Azure App Service
- Azure DocumentDB (MongoDB 互換性あり) (または同等のものへのアクセス)。 Azure DocumentDB データベースを作成するには、 このチュートリアルのパート 2 の手順に従います。
選択したツールに応じて、Visual Studio Code または Azure CLI。 Visual Studio Code を使用する場合は、 Docker 拡張機能 と Azure App Service 拡張機能が必要です。
次の Python パッケージ:
- MongoDB に接続するための MongoDB シェル (mongosh)。
- Web フレームワークとしての Flask または Django。
Docker がローカルにインストールされている。
サンプル アプリ
このチュートリアルの最後の結果は、次のスクリーンショットのように、Azure にデプロイされ、実行されているレストラン レビュー アプリです。
このチュートリアルでは、MongoDB をデータ ストレージに利用する Python レストラン レビュー アプリを構築します。 PostgreSQL を使用したアプリの例については、「 マネージド ID を使用して Flask Web アプリを作成して Azure にデプロイする」を参照してください。