概要: MongoDB を使用した Azure 上のコンテナー化された Python Web アプリ

このチュートリアルでは、Python Web アプリをコンテナー化して Azure にデプロイする方法について説明します。 1 つのコンテナー Web アプリを Azure App Service でホストし、そのアプリで Azure Cosmos DB 対応 MongoDB を使用してデータを保存します。 App Service の Web App for Containers を使用すると、基になるコンテナー オーケストレーターの管理と保守について心配することなく、コンテナーの作成に集中できます。 Web アプリをビルドする場合、Azure App Service は、コンテナーを使用して最初の手順を実行するのに適したオプションです。 Azure でのコンテナーの使用について詳しくは、Azure コンテナーのオプションの比較に関するページを参照してください。

このチュートリアルでは、次のことについて説明します。

  • Docker コンテナーをローカルでビルドして実行する。 この手順は必須ではありません

  • Docker コンテナー イメージを Azure で直接ビルドする。

  • App Service を構成して、Docker コンテナー イメージに基づいて Web アプリを作成する。

このチュートリアルに従うと、Azure への Python Web アプリの継続的インテグレーション (CI) と継続的デプロイ (CD) の基礎を習得できます。

サービスの概要

このチュートリアルをサポートするサービス図には、2 つの環境 (開発環境と Azure) と、このチュートリアルで使用されるさまざまな Azure サービスが示されています。

A screenshot of the services using in the Tutorial - Containerized Python App on Azure.

上の図に示されている、このチュートリアルをサポートするコンポーネントは次のとおりです。

  • Azure App Service

    • コンテナー化を可能にする基になる App Service 機能は、Web App for Containers です。 Azure App Service では、組み込みイメージとカスタム イメージの両方をホストするために、Docker コンテナー テクノロジが使用されます。 このチュートリアルでは、Python コードからイメージをビルドし、それを Web App for Containers にデプロイします。

    • Web App for Containers は、レジストリ内の Webhook を使用して、新しいイメージの通知を受け取ります。 リポジトリに新しいイメージをプッシュすると、それがトリガーとなって App Service がイメージをプルし、再起動します。

  • Azure Container Registry

    • Azure Container Registry を使用すると、Azure で Docker イメージとそのコンポーネントを操作できます。 Azure でのデプロイに近いレジストリが提供され、アクセスを制御できるため、Microsoft Entra グループとアクセス許可を使用できます。

    • このチュートリアルでは、レジストリ ソースは Azure Container Registry ですが、Docker Hub またはプライベート レジストリを少々変更して使用することもできます。

  • Azure Cosmos DB for MongoDB

    • Azure Cosmos DB for MongoDB は、このチュートリアルでデータを格納するために使用される NoSQL データベースです。

    • Azure Cosmos DB リソースへのアクセスは、コンテナー化されたアプリに環境変数として渡される接続文字列を介して行われます。

認証

このチュートリアルでは、Docker イメージを (ローカルまたは Azure で直接) ビルドし、それを Azure App Service にデプロイします。 App Service は、Azure Container Registry リポジトリからコンテナー イメージをプルします。

App Service は、マネージド ID を使用して、Azure Container Registry からイメージをプルします。 マネージド ID を使用すると、Web アプリにアクセス許可を付与できます。これにより Web アプリは、資格情報を指定することなく、他の Azure リソースにアクセスできます。 具体的には、このチュートリアルでは、システム割り当てマネージド ID を使用します。 レジストリ コンテナー イメージを使用するために、App Service のセットアップ時にマネージド ID を構成します。

このチュートリアルのサンプル Web アプリでは、データを保存するために MongoDB を使用します。 サンプル コードは、接続文字列経由で Azure Cosmos DB に接続します。

前提条件

このチュートリアルを完了するには、次のものが必要です。

サンプル アプリ

この Python サンプル アプリは、レストランとレビューのデータを MongoDB に保存するレストラン レビュー アプリです。 PostgreSQL を使用する Web アプリの例については、「マネージド ID を使用して Flask Web アプリを作成して Azure にデプロイする」を参照してください

このチュートリアルを終了すると、次のスクリーンショットのように、レストラン レビュー アプリが Azure にデプロイされ実行されます。

A screenshot of the sample app created from the Python containerized web app used in the Tutorial - Containerized Python App on Azure.

次のステップ