この記事は、Python Web アプリのコンテナー化とAzure App Serviceへのデプロイに関する 5 部構成のチュートリアル シリーズのパート 3 です。 パート 2 では、コンテナー イメージをローカルでビルドして実行しました。 この記事では、Docker をローカルにインストールせずに、Azure Container Registryで同じPython Web アプリを直接ビルドします。 Azureでのイメージのビルドは、通常、ローカルでビルドしてからレジストリにプッシュするよりも高速で簡単です。 クラウドベースのイメージビルドにより、開発環境で Docker を実行する必要もなくなります。
Azure App Service では、Docker Hub、Azure Container Registry、Azure DevOps などのプラットフォームから CI/CD パイプラインを使用して、コンテナー化された Web アプリをデプロイして実行できます。 Docker イメージがAzure Container Registryされたら、Azure App Serviceにデプロイできます。
前提条件
開始する前に、 このチュートリアル シリーズのパート 2 を完了していることを確認してください。このシリーズでは、次の内容について説明します。
- サンプル リポジトリ (Django または Flask) を複製します。
- Azure リソースのリソース グループの作成。
- コンテナー化されたアプリをローカルで実行して動作することを確認します。
以下も必要です。
- 有効な Azure サブスクリプション。 アカウントがない場合は、無料アカウントを作成してください。
- Azure CLIローカルにインストールするか (Azure CLI手順用)、またはAzure Cloud Shellにアクセスします。
- Docker 拡張機能がインストールされているVisual Studio Code (VS Code の手順用)。
重要
サンプル Dockerfile では、基本イメージとして python:3.8-slim を使用します。
Python 3.8 は 2024 年 10 月に終了し、セキュリティ更新プログラムを受け取らなくなりました。 運用環境のデプロイに python:3.12-slim または python:3.13-slim を使用するように Dockerfile を更新します。
このサービス図では、この記事で説明するコンポーネントが強調表示されています。
Azure Container Registry を作成する
既にAzure Container Registryがある場合は、この手順をスキップして次の手順に進みます。 それ以外の場合は、Azure CLIを使用して新しいAzure Container Registryを作成します。
Azure CLIコマンドは、Azure Cloud Shellまたはローカル開発環境で、Azure CLIがインストールされた状態で実行できます。
手記
このチュートリアル シリーズのパート 2 と同じ名前を使用します。
az acr create コマンドを使用して、Azure コンテナー レジストリを作成します。
#!/bin/bash # Use the resource group that you created in part 2 of this tutorial series. RESOURCE_GROUP_NAME='msdocs-web-app-rg' # REGISTRY_NAME must be unique within Azure and contain 5-50 alphanumeric characters. # If the name is already taken, you'll receive an error. Choose a different name and retry. REGISTRY_NAME='msdocscontainerregistryname' echo "Creating Azure Container Registry $REGISTRY_NAME..." az acr create -g $RESOURCE_GROUP_NAME -n $REGISTRY_NAME --sku Standardコマンドの JSON 出力で、
loginServer値を見つけます。 この値は、完全修飾レジストリ名 (すべて小文字) を表し、レジストリ名を含みます。出力例:
{ "loginServer": "msdocscontainerregistryname.azurecr.io", "name": "msdocscontainerregistryname", ... }ローカル コンピューターでAzure CLIを使用している場合は、az acr login コマンドを実行してコンテナー レジストリにサインインします。
az acr login -n $REGISTRY_NAME-nパラメーターは、短いレジストリ名 (msdocscontainerregistrynameなど) または完全修飾レジストリ名 (msdocscontainerregistryname.azurecr.io) を受け取ります。 このコマンドは、Azure CLI資格情報を使用してAzure Container Registryで Docker を認証します。想定される出力:
Login Succeeded手記
Azure Cloud Shellを使用している場合は、Cloud Shell セッションで認証が自動的に処理されるため、
az acr loginコマンドを実行する必要はありません。
Azure Container Registry でイメージをビルドする
さまざまなアプローチを使用して、Azure でコンテナー イメージを直接生成できます。
- Azure Cloud Shellを使用すると、ローカル環境に関係なく、完全にクラウドにイメージを構築できます。
- または、VS Code またはAzure CLIを使用して、ローカルセットアップからAzureでイメージを作成できます。Docker をローカルで実行する必要はありません。
インストールされているAzure CLIまたはAzure Cloud Shellを使用して、ローカル開発環境でAzure CLIコマンドを実行できます。
コンソールで、このチュートリアル シリーズのパート 2 から、複製したリポジトリのルート フォルダーに移動します。
az acr build コマンドを使用してコンテナー イメージをビルドします。
ローカル開発:
az acr build -r $REGISTRY_NAME -g $RESOURCE_GROUP_NAME -t msdocspythoncontainerwebapp:latest .Azure Cloud Shell:
Azure Cloud Shellを使用している場合は、ローカル パス (
.) ではなく、GitHub リポジトリの URL を指定します。# For Django sample: az acr build -r $REGISTRY_NAME -g $RESOURCE_GROUP_NAME -t msdocspythoncontainerwebapp:latest https://github.com/Azure-Samples/msdocs-python-django-container-web-app.git # For Flask sample: az acr build -r $REGISTRY_NAME -g $RESOURCE_GROUP_NAME -t msdocspythoncontainerwebapp:latest https://github.com/Azure-Samples/msdocs-python-flask-container-web-app.git最後の引数 (
.または Git URL) は、Docker ビルド コンテキストです。Docker ビルド コンテキストは、Docker がイメージのビルドに使用する Dockerfile ファイルとアプリケーション ファイルを含むディレクトリです。az acr repository list コマンドを使用して、コンテナー イメージが作成されたことを確認します。
az acr repository list -n $REGISTRY_NAME想定される出力:
[ "msdocspythoncontainerwebapp" ]
次の手順
Web アプリ をデプロイする