次の方法で共有


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

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

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

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

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

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

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 環境変数に設定し、次の手順に進みます。

    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" を追加して、完全修飾レジストリ名を作成します。 成功した場合は、"ログインに成功しました" というメッセージが表示されます。

    手記

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

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

コンテナー イメージは、いくつかの方法で Azure で直接ビルドできます。 まず、ローカル環境をまったく使用せずにイメージをビルドする Azure Cloud Shell を使用できます。 VS Code または Azure CLI を使用して、ローカル環境から Azure でコンテナー イメージをビルドすることもできます。 クラウドでイメージをビルドする場合、Docker をローカル環境で実行する必要はありません。 必要に応じて、「Clone」の手順に従うか、このチュートリアルのパート 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
    

次の手順

Web アプリ をデプロイする