az containerapp up (またはup) コマンドは、既存のイメージ、ローカル ソース コード、または GitHub リポジトリから Azure Container Apps にアプリをデプロイする最速の方法です。 この 1 つのコマンドを使用すると、コンテナー アプリを数分で稼働させることができます。
このコマンドは、ローカル ソース コードまたは GitHub リポジトリを指定するときに、コンテナー イメージをビルドして Azure Container Registry にプッシュできます。 GitHub リポジトリから作業すると、GitHub リポジトリに変更をコミットするときに新しいコンテナー イメージを自動的にビルドしてプッシュする GitHub Actions ワークフローが作成されます。
この記事では、コマンドを使用して、既存のイメージ、ローカル ソース コード、GitHub リポジトリからコンテナー アプリをデプロイする方法について説明します。
前提条件
| 要件 | Instructions |
|---|---|
| Azure アカウント | お持ちでない場合は、無料のアカウントを作成してください。 Azure サブスクリプションには 共同作業者 ロールまたは 所有者 ロールが必要です。 詳細については、「 Azure portal を使用して Azure ロールを割り当てる」を参照してください。 |
| Azure CLI | Azure CLI をインストールします。 |
| GitHub のアカウント | GitHub リポジトリでイメージを使用する場合は、 無料の GitHub アカウントにサインアップします。 |
| ローカル ソース コード | ローカル ソース コードからイメージを作成する場合は、コードをローカル ディレクトリに配置します。 |
| 既存のイメージ | 既存のイメージを使用する場合は、レジストリ サーバー、イメージ名、およびタグをメモします。 プライベート レジストリを使用する場合は、資格情報も書き留めます。 |
既存のリソースを使用する
up コマンドは、リソースを作成することも、次のような既存のものを使用することもできます。
- リソース グループ。
- コンテナー レジストリ。
- Container Apps 環境と Log Analytics ワークスペース。
- コンテナー アプリ。
Container Apps 環境をカスタマイズする必要がある場合は、まず az containerapp env create コマンドを使用して環境を作成およびカスタマイズします。 その後、 up コマンドを実行するときに、 --environment オプションを使用してカスタマイズされた環境を指定します。
既存の環境を指定しない場合、 up コマンドはリソース グループ内の環境を検索します。 コマンドで環境が見つかると、その環境が使用されます。 コマンドで環境が見つからない場合は、Log Analytics ワークスペースを含む環境が作成されます。
az containerapp up コマンドとそのオプションの詳細については、az containerapp upを参照してください。
Azure CLI 環境を設定する
Azure CLI を使用して Azure にサインインします。
az loginAzure CLI 用の Container Apps 拡張機能をインストールします。
az extension add --name containerapp --upgradeMicrosoft.App名前空間を登録します。az provider register --namespace Microsoft.AppLog Analytics ワークスペースの
Microsoft.OperationalInsightsプロバイダーを登録します。az provider register --namespace Microsoft.OperationalInsights
既存のイメージからデプロイする
パブリックまたはプライベート コンテナー レジストリに既存のイメージを使用するコンテナー アプリをデプロイできます。 プライベート レジストリからデプロイする場合は、 --registry-server、 --registry-username、および --registry-password オプションを使用して資格情報を指定する必要があります。
次のコード例を使用して、既存のイメージからコンテナー アプリをデプロイできます。 コマンドを実行する前に、山かっこで囲まれたプレースホルダーを実際の値に置き換えます。
az containerapp up \
--name <CONTAINER_APP_NAME> \
--image <REGISTRY_SERVER>/<IMAGE_NAME>:<TAG> \
--ingress external \
--target-port <PORT_NUMBER>
このコマンドは、次のアクションを実行します。
- リソース グループを作成します。
- 環境と Log Analytics ワークスペースを作成します。
- イメージをパブリック レジストリからプルするコンテナー アプリを作成してデプロイします。
- コンテナー アプリの
ingress値を、ターゲット ポートが指定した値に設定されたexternalに設定します。
up コマンドを使用して、コンテナー アプリを再デプロイすることもできます。 新しいイメージを使用して再デプロイする場合は、--image オプションを使用して新しいイメージを指定します。
--resource-groupオプションと--environmentオプションが元のデプロイの値に設定されていることを確認します。
az containerapp up \
--name <CONTAINER_APP_NAME> \
--image <REGISTRY_SERVER>/<IMAGE_NAME>:<TAG> \
--resource-group <RESOURCE_GROUP_NAME> \
--environment <ENVIRONMENT_NAME> \
--ingress external \
--target-port <PORT_NUMBER>
ローカル ソース コードからのデプロイ
up コマンドを使用してローカル ソースからデプロイすると、コンテナー イメージがビルドされ、レジストリにプッシュされ、コンテナー アプリがデプロイされます。 レジストリを指定しない場合、コマンドは Container Registry にレジストリを作成します。
コマンドは、Dockerfile の有無にかかわらずイメージをビルドできます。 Dockerfile を使用しないビルドでは、次の言語がサポートされています。
- .NET
- Node.js
- PHP
- Python
次のコード例を使用して、ローカル ソース コードからコンテナー アプリをデプロイできます。
az containerapp up \
--name <CONTAINER_APP_NAME> \
--source <SOURCE_DIRECTORY>\
--ingress external
このコマンドは、次のアクションを実行します。
- リソース グループを作成します。
- 環境と Log Analytics ワークスペースを作成します。
- Container Registry にレジストリを作成します。
- (存在する場合は Dockerfile を使用して) コンテナー イメージをビルドします。
- イメージをレジストリにプッシュします。
- コンテナー アプリを作成してデプロイします。
Dockerfile に EXPOSE 命令が含まれている場合、 up コマンドは、Dockerfile の情報を使用してコンテナー アプリのイングレス ポートとターゲット ポートを構成します。 Dockerfile を使用してイングレスを構成した場合、またはアプリでイングレスを必要としない場合は、--ingress オプションを省略できます。
コマンドの出力には、コンテナー アプリの URL が含まれます。
コマンドが Cloud Build エージェントの待機中であることを報告した後、応答を停止した場合、問題の原因として GitHub の一時的なエラーが発生している可能性があります。 状況を解決するには、コマンドをもう一度実行します。
エラーが発生した場合は、 --debug オプションを使用してコマンドをもう一度実行して、詳細情報を取得できます。 Dockerfile なしでビルドが失敗した場合は、Dockerfile を追加してコマンドを再実行してみてください。
az containerapp up コマンドを使用して、更新されたイメージを使用してコンテナー アプリを再デプロイするには、--resource-groupオプションと--environment オプションを含めます。 ローカル ソース コードからコンテナー アプリを再デプロイするには、次の手順を実行します。
ソース コードを変更します。
次のコマンドを実行します。
az containerapp up \ --name <CONTAINER_APP_NAME> \ --source <SOURCE_DIRECTORY> \ --resource-group <RESOURCE_GROUP_NAME> \ --environment <ENVIRONMENT_NAME>
GitHub リポジトリからデプロイする
az containerapp up コマンドを使用して GitHub リポジトリからデプロイすると、コンテナ イメージをビルドしてレジストリにプッシュし、コンテナ アプリをデプロイする GitHub Actions ワークフローが生成されます。 レジストリを指定しない場合、コマンドは Container Registry にレジストリを作成します。
イメージをビルドするには、Dockerfile が必要です。 Dockerfile に EXPOSE 命令が含まれている場合、コマンドは Dockerfile の情報を使用してコンテナー アプリのイングレスポートとターゲット ポートを構成します。
次のコード例を使用して、GitHub リポジトリからコンテナー アプリをデプロイできます。
az containerapp up \
--name <CONTAINER_APP_NAME> \
--repo <GITHUB_REPOSITORY_URL> \
--ingress external
このコマンドは、次のアクションを実行します。
- リソース グループを作成します。
- 環境と Log Analytics ワークスペースを作成します。
- Container Registry にレジストリを作成します。
- Dockerfile を使用してコンテナー イメージをビルドします。
- イメージをレジストリにプッシュします。
- コンテナー アプリを作成してデプロイします。
- GitHub Actions ワークフローを作成して、コンテナー イメージをビルドし、将来の変更が GitHub リポジトリにプッシュされたときにコンテナー アプリをデプロイします。
サービス プリンシパルを作成できないためにコマンドが失敗した場合は、Azure でサービス プリンシパルを手動で作成できます。 その後、それに関する情報をコマンドに渡すことができます。
az containerapp up \
--name <CONTAINER_APP_NAME> \
--repo <GITHUB_REPOSITORY_URL> \
--service-principal-client-id "$SERVICE_PRINCIPAL_CLIENT_ID" \
--service-principal-client-secret "$SERVICE_PRINCIPAL_CLIENT_SECRET" \
--service-principal-tenant-id "$AZURE_TENANT_ID"
--ingress external
Dockerfile を使用してイングレスを構成した場合、またはアプリでイングレスを必要としない場合は、--ingress オプションを省略できます。
up コマンドは、GitHub Actions ワークフローを作成します。 その結果、コマンドを再実行すると、複数のワークフローを作成するという望ましくない効果が生まれます。 アプリのイメージに変更をデプロイする場合は、コマンドを再実行するのではなく、GitHub リポジトリに変更をプッシュします。 GitHub ワークフローは、リポジトリ内の変更を自動的に検出し、アプリをビルドしてデプロイします。 ワークフローを変更するには、GitHub でワークフロー ファイルを編集します。
コンテナー アプリの設定を構成する
az containerapp up コマンドを使用すると、主に既定の設定を使用するコンテナー アプリを作成してデプロイする効率的な方法が提供されます。 ただし、 up コマンドを使用した後、より高度な設定を構成する場合は、次のような他の Azure CLI コマンドを実行する必要があります。
- 分散アプリケーション ランタイム (Dapr):
az containerapp dapr enable - シークレット:
az containerapp secret set - トランスポート プロトコル:
az containerapp ingress update
リソースやスケーリングの設定など、コンテナー アプリの他の設定をカスタマイズする場合は、最初に up コマンドを使用してコンテナー アプリをデプロイします。 次に、 az containerapp update コマンドを使用してこれらの設定を変更します。
az containerapp up コマンドは、az containerapp update コマンドの省略形ではありません。