次の方法で共有


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

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

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

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

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

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

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

サービスの概要

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

PythonウェブアプリをAzure Container Appsにデプロイするための環境とサービスのダイアグラム。

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

  • 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 にデプロイされます。

認証とセキュリティ

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

CI/CD を設定するには、GitHub アカウントの OAuth アプリとしてAzure Container Appsを承認します。 Container Apps は、OAuth アプリとして、Azureリソースとジョブに関する情報を含むGitHub Actionsワークフロー ファイルをリポジトリに書き込んで更新します。 このワークフローでは、Microsoft Entra サービス プリンシパル (または既存のサービス プリンシパル) の資格情報を使用して、Container Apps のロールベースのアクセス権と、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

  • Python パッケージ:

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

サンプル アプリ

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

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

次のステップ