次の方法で共有


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

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

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

このチュートリアル シリーズの記事を完了すると、Python Web アプリの Azure への継続的インテグレーション (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 Cosmos DB for MongoDB

    • MongoDB 用 Azure Cosmos DB は、このチュートリアルでデータ ストレージに使用される NoSQL データベースです。

    • コンテナー化されたアプリケーションは、環境変数として格納され、アプリに提供される接続文字列を使用して、Azure Cosmos DB リソースに接続してアクセスします。

認証

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

リポジトリからイメージを安全にプルするために、App Service はシステム割り当てマネージド ID を利用します。 このマネージド ID は、他の Azure リソースと対話するためのアクセス許可を Web アプリに付与するため、明示的な資格情報は不要です。 このチュートリアルでは、レジストリ コンテナー イメージを使用するように App Service のセットアップ中にマネージド ID を構成します。

チュートリアルのサンプル Web アプリでは、MongoDB を使用してデータを格納します。 サンプル コードは、接続文字列を使用して Azure Cosmos DB に接続します。

前提 条件

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

サンプル アプリ

このチュートリアルの最後の結果は、次のスクリーンショットのように、Azure にデプロイされ、実行されているレストラン レビュー アプリです。

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

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

次の手順