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

このチュートリアル シリーズでは、Python Web アプリをコンテナー化し、ローカルで実行するか 、Azure App Service にデプロイする方法について説明します。 App Service Web App for Containers を使用すると、基になるコンテナー オーケストレーターの管理と保守について心配することなく、コンテナーの構築に集中できます。 Web アプリを構築する場合、Azure App Serviceはコンテナーを使用して最初の手順を実行する場合に適したオプションです。 このコンテナー Web アプリでは、ローカルの MongoDB インスタンスまたは Azure DocumentDB (MongoDB 互換性あり) を使用してデータを格納できます。 Azure でのコンテナーの使用の詳細については、「Azure コンテナー オプションの比較」を参照してください。

このチュートリアルでは、次の操作を行います。

このチュートリアル シリーズの記事を完了すると、AzureするPython Web アプリの継続的インテグレーション (CI) と継続的配置 (CD) の基礎が得られます。

サービスの概要

このチュートリアルをサポートするサービス図は、開発者環境と Azure 環境の 2 つの環境を示しています。 開発プロセスで使用される主要な Azure サービスが強調表示されています。

チュートリアル - Azure 上のコンテナー化された Python アプリで使用されるサービスのスクリーンショット。

開発者環境

このチュートリアルの開発環境には、次のコンポーネントが含まれています。

  • ローカル開発システム: Docker コンテナーのコーディング、ビルド、テストに使用されるパーソナル コンピューター。

  • Docker コンテナー化: Docker は、アプリとその依存関係をポータブル コンテナーにパッケージ化するために使用されます。

  • 開発ツール: コード エディターと、ソフトウェア開発に必要なその他のツール。

  • ローカル MongoDB インスタンス: 開発中にデータ ストレージに使用されるローカル MongoDB データベース。

  • MongoDB 接続: ローカル MongoDB データベースへのアクセスを提供する接続文字列。

Azure 環境

このチュートリアルのAzure環境をサポートするコンポーネントは次のとおりです。

  • Azure App Service

    • 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 上のコンテナー化された Python アプリで使用される Python コンテナー化 Web アプリから作成されたサンプル アプリのスクリーンショット。

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

次の手順