次の方法で共有


チュートリアル: Azure Container Apps に Python Web アプリをデプロイするための概要の概念について説明します

このチュートリアル シリーズでは、Python Web アプリをコンテナー化し、Azure Container Appsにデプロイする方法について説明します。 サンプル Web アプリがコンテナー化され、Docker イメージが Azure Container Registry格納されます。 Azure Container Apps は、Container Registry から Docker イメージをプルし、コンテナーを作成するように構成されています。 サンプル アプリは、Azure Database for PostgreSQL に接続して、Container Apps とその他の Azure リソース間の通信を示します。

クラウドネイティブおよびコンテナー化された Python Web アプリを Azure にビルドしてデプロイするには、いくつかのオプションがあります。 このチュートリアル シリーズでは、Azure Container Apps について説明します。 Container Apps は、汎用コンテナーを実行する場合に適しています。特に、コンテナーにデプロイされた多数のマイクロサービスにまたがるアプリケーションに適しています。

このチュートリアル シリーズでは、1 つのコンテナーを作成します。 Python Web アプリをコンテナーとして Azure App Service にデプロイする方法については、MongoDBを使用した Azure でのコンテナー化された Python Web アプリの に関するページを参照してください。

このチュートリアル シリーズの手順では、次のタスクを完了する方法について説明します。

  • Python Web アプリから Docker イメージをビルドし、そのイメージを Azure Container Registry に格納します。
  • Docker イメージをホストするように Azure Container Apps を構成します。
  • GitHub Actions 設定して、GitHub リポジトリへの変更によってトリガーされた新しい Docker イメージでコンテナーを更新します。 この手順は省略可能です。
  • Azure への Python Web アプリの継続的インテグレーションと継続的デリバリー (CI/CD) を設定します。

このシリーズの最初の部分では、Azure Container Apps に Python Web アプリをデプロイするための基本的な概念について説明します。

サービスの概要

次の図は、このチュートリアル シリーズでローカル環境、GitHub リポジトリ、および Azure サービスを使用する方法を示しています。

Azure Container Apps に Python Web アプリをデプロイするための環境とサービスの図。

この図には、次のコンポーネントが含まれています。

  • Azure Container Apps:

    Azure Container Apps を使用すると、サーバーレス プラットフォームでマイクロサービスとコンテナー化されたアプリケーションを実行できます。 サーバーレス プラットフォームは、最小限の構成でコンテナーを実行する利点を享受できることを意味します。 Azure Container Apps を使用すると、HTTP トラフィック、イベントドリブン処理、CPU やメモリの負荷などの特性に基づいてアプリケーションを動的にスケーリングすることができます。

    Container Apps は、Azure Container Registry から Docker イメージをプルします。 コンテナー イメージを変更すると、デプロイされたコンテナーの更新がトリガーされます。 更新をトリガーするように GitHub Actions を構成することもできます。

  • Azure Container Registry:

    Azure Container Registry を使用すると、Azure で Docker イメージを操作できます。 Container Registry は Azure のデプロイに近いため、アクセスを制御できます。 Microsoft Entra グループとアクセス許可を使用して、Docker イメージへのアクセスを制御できます。

    このチュートリアル シリーズでは、レジストリ ソースは Azure Container Registry です。 ただし、Docker Hub またはプライベート レジストリをマイナーな変更で使用することもできます。

  • Azure Database for PostgreSQL:

    サンプル コードで、PostgreSQL データベースにアプリケーション データが格納されます。 コンテナー アプリは、ユーザー割り当てマネージド IDを使用して PostgreSQL に接続します。 接続情報は、明示的に構成された環境変数に格納されるか、Azure サービス コネクタを介して格納されます。

  • GitHub:

    このチュートリアル シリーズのサンプル コードは、ローカルでフォークして複製する GitHub リポジトリにあります。 GitHub Actions を使用して CI/CD ワークフローをセットアップするには、GitHub アカウントが必要です。

    ローカルまたは Azure Cloud Shell で作業し、サンプル コード リポジトリからコンテナー イメージをビルド 場合は、GitHub アカウントを使用せずにこのチュートリアル シリーズに従うことができます。

リビジョンと CI/CD

コードを変更してコンテナーにプッシュするには、変更を含む新しい Docker イメージを作成します。 次に、イメージを Container Registry にプッシュし、コンテナー アプリの新しいリビジョンを作成します。

このプロセスを自動化するために、チュートリアル シリーズの省略可能な手順では、GitHub Actions を使用して CI/CD パイプラインを構築する方法を示します。 新しいコミットが GitHub リポジトリにプッシュされるたびに、パイプラインによってコードが自動的にビルドされ、Container Apps にデプロイされます。

認証とセキュリティ

このチュートリアル シリーズでは、Docker コンテナー イメージを Azure で直接構築し、Azure Container Apps にデプロイします。 Container Apps は、Azure 仮想ネットワークでサポートされている 環境のコンテキストで実行されます。 仮想ネットワークは、Azure のプライベート ネットワークの基本的な構成要素です。 Container Apps を使用すると、イングレスを有効にすることで、コンテナー アプリをパブリックの Web に公開できます。

CI/CD を設定するには、GitHub アカウントの OAuth アプリ として Azure Container Apps を承認します。 Container Apps は OAuth アプリとして、GitHub Actions ワークフロー ファイルをリポジトリに書き込み、それらを更新するための Azure リソースとジョブに関する情報を提供します。 このワークフローでは、Container Apps のロールベースのアクセス権を持つ Microsoft Entra サービス プリンシパル (または既存のサービス プリンシパル) の資格情報と、Azure Container Registry のユーザー名とパスワードを使用して、Azure リソースを更新します。 資格情報は GitHub リポジトリに安全に格納されます。

最後に、このチュートリアル シリーズのサンプル Web アプリは、PostgreSQL データベースにデータを格納します。 サンプル コードでは、接続文字列を介して PostgreSQL に接続します。 アプリが Azure で実行されている場合、ユーザー割り当てマネージド ID を使用して PostgreSQL データベースに接続します。 このコードは、実行時に DefaultAzureCredential を使用して、接続文字列内のパスワードを Microsoft Entra アクセス トークンで動的に更新します。 このメカニズムにより、接続文字列または環境変数にパスワードをハードコーディングする必要がなくなり、セキュリティが強化されます。

このチュートリアル シリーズでは、マネージド ID を作成し、データベースにアクセスして更新できるように、適切な PostgreSQL ロールとアクセス許可を付与する手順について説明します。 Container Apps の構成中、チュートリアル シリーズでは、アプリでマネージド ID を構成し、データベースの接続情報を含む環境変数を設定する手順について説明します。 Azure サービス コネクタを使用して、同じことを実行することもできます。

必須コンポーネント

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

  • 以下を作成できる Azure アカウント:

    • Azure Container Registry インスタンス。
    • Azure Container Apps 環境。
    • Azure Database for PostgreSQL のインスタンス。
  • 使用するツールに応じて、Visual Studio Code または Azure CLIを使用します。

    • Visual Studio Code の場合は、Container Apps 拡張機能が必要です。
    • Azure Cli は、Azure Cloud Shellを使用して使用できます。
  • Python パッケージ:

    • psycopg2-binary は PostgreSQL に接続するためのものです。
    • Web フレームワークとしての Flask または Django

サンプル アプリ

この Python サンプル アプリは、レストランとレビューのデータを PostgreSQL に保存するレストラン レビュー アプリです。 チュートリアル シリーズの最後には、次のスクリーンショットのようなレストラン レビュー アプリが Azure Container Apps にデプロイされ、実行されます。

Python コンテナー化された Web アプリから作成されたサンプル アプリのスクリーンショット。

次のステップ

Azure Container Apps と PostgreSQL を使用して Python Web アプリをビルドしてデプロイする