次の方法で共有


コンテナー化された Python Web アプリをクラウドでビルドする

この記事は、Python Web アプリをコンテナー化して Azure App Service にデプロイする方法に関するチュートリアルの一部です。 App Service を使用すると、コンテナー化された Web アプリを実行すること、および Docker Hub、Azure Container Registry、Visual Studio Team Services を使用した継続的インテグレーション/継続的デプロイ (CI/CD) 機能を通じてデプロイを行うことができます。 チュートリアルのこの部分では、コンテナー化された Python Web アプリをクラウドでビルドする方法について説明します。

このチュートリアルの前の "省略可能" な部分では、コンテナー イメージをビルドし、ローカルで実行しました。 これに対し、チュートリアルのこの部分では、Python Web アプリを Docker イメージに直接Azure Container Registryでビルド (コンテナー化) します。 Azure でのイメージのビルドは、ローカルでイメージをビルドし、レジストリにプッシュするよりも通常は高速で簡単です。 また、クラウドでのビルドでは、Docker を開発環境で実行する必要がありません。

Docker イメージが Azure Container Registry にあれば、それを Azure App Service にデプロイできます。

次のサービス図では、この記事で説明するコンポーネントが強調表示されています。

「チュートリアル - Azure でのコンテナー化された Python アプリ」で使用されるサービスのスクリーンショット。クラウドでのビルド パスが強調表示されています。

1. Azure Container Registry を作成する

使用できる Azure Container Registry が既にある場合は、次の手順に進みます。 ない場合は作成します。

Azure CLI コマンドは、Azure Cloud Shell で、または Azure CLI がインストールされているワークステーション上で実行できます。 Cloud Shellで実行する場合は、手順 3 をスキップします。

手順 1. 必要に応じて、az group create コマンドを使用してリソース グループを作成します。 パート 2 で Azure Cosmos DB for MongoDB アカウントを既に設定している場合 。このチュートリアルのローカルでコンテナーをビルドしてテストし 、RESOURCE_GROUP_NAMEをそのアカウントに使用したリソース グループの名前に設定し、手順 2 に進みます。

RESOURCE_GROUP_NAME='msdocs-web-app-rg'
LOCATION='eastus'

az group create -n $RESOURCE_GROUP_NAME -l $LOCATION

LOCATION は Azure の場所の値である必要があります。 近くの場所を選択します。 次のコマンドを使用して、Azure の場所の値を一覧表示できます。 az account list-locations -o table

手順 2. az acr create コマンドを使用してコンテナー レジストリを作成します。

REGISTRY_NAME='<your Azure Container Registry name>'

az acr create -g $RESOURCE_GROUP_NAME -n $REGISTRY_NAME --sku Basic

REGISTRY_NAMEは Azure 内で一意であり、5 から 50 文字の英数字を含む必要があります。

コマンドの JSON 出力で、 値を loginServer 探します。これは完全修飾レジストリ名 (すべて小文字) で、指定したレジストリ名を含める必要があります。

手順 3. Azure CLI をローカルで実行している場合は、 az acr login コマンドを使用してレジストリにログインします。

az acr login -n $REGISTRY_NAME

コマンドは、完全修飾レジストリ名を作成する名前に "azurecr.io" を追加します。 成功した場合、"Login Succeeded" (ログインに成功しました) というメッセージが表示されます。

注意

コマンドはaz acr login、Cloud Shellでは必要ありません。サポートされていません。

2. Azure Container Registry でイメージをビルドする

Azure では、いくつかの方法でコンテナー イメージを直接ビルドできます。 第一に、ローカル環境をまったく使用せずにイメージをビルドする Azure Cloud Shell を使用できます。 VS Code または Azure CLI を使用して、ローカル環境から Azure でコンテナー イメージをビルドすることもできます。 クラウドでイメージをビルドする場合は、Docker をローカル環境で実行する必要がありません。 必要に応じて、このチュートリアルのパート 2 の 「サンプル アプリを複製またはダウンロード する」の手順に従って、サンプル Flask または Django Web アプリを取得できます。

Azure CLI コマンドは、Azure CLI がインストールされているワークステーションまたは Azure Cloud Shellで実行できます。 Cloud Shellで実行する場合は、手順 1 をスキップします。

手順 1. Azure CLI をローカルで実行している場合は、 az acr login コマンドを使用してまだ実行していない場合は、レジストリにログインします。

az acr login -n $REGISTRY_NAME

レジストリが作成されたサブスクリプションとは異なるサブスクリプションからレジストリにアクセスする場合、--suffix スイッチを使用します。

注意

コマンドはaz acr login、Cloud Shellでは必要ありません。

手順 2. az acr build コマンドを使用してイメージをビルドします。

az acr build -r $REGISTRY_NAME -g $RESOURCE_GROUP_NAME -t msdocspythoncontainerwebapp:latest .

このコマンドの説明:

  • コマンドの最後にあるドット (".") は、ビルドするソース コードの場所を示します。 サンプル アプリのルート ディレクトリでこのコマンドを実行しない場合、コードへのパスを指定してください。

    環境内のコードへのパスではなく、必要に応じて、サンプル GitHub リポジトリ https://github.com/Azure-Samples/msdocs-python-django-container-web-app へのパス (または https://github.com/Azure-Samples/msdocs-python-flask-container-web-app) を指定できます。

  • -t (--image と同じ) オプションを指定しなかった場合、このコマンドでは、ローカル コンテキスト ビルドがレジストリにプッシュされずにキューに入れられます。 プッシュなしのビルドは、イメージがビルドされるか確認する場合に便利です。

手順 3. az acr repository list コマンドを使用して、コンテナー イメージが作成されたことを確認します。

az acr repository list -n $REGISTRY_NAME

次のステップ