az containerapp up コマンドを使用して Azure Container Apps をデプロイする

az containerapp up (または up) コマンドは、既存のイメージ、ローカル ソース コード、または GitHub リポジトリから Azure Container Apps にアプリをデプロイする最速の方法です。 この 1 つのコマンドを使用すると、コンテナー アプリを数分以内に稼働させることができます。

az containerapp up コマンドは、主に既定の設定を使用するコンテナー アプリを作成してデプロイするための合理化された方法です。 ただし、より高度な設定を構成するには、他の CLI コマンドを実行する必要があります:

コンテナー アプリのリソースまたはスケーリング設定をカスタマイズするには、up コマンドを使用し、az containerapp update コマンドを使用してこれらの設定を変更します。 az containerapp up コマンドは az containerapp update コマンドの省略形ではありません。

up コマンドは、次を含む既存のリソースを作成または使用できます。

  • リソース グループ
  • Azure Container Registry
  • Container Apps 環境と Log Analytics ワークスペース
  • コンテナー アプリ

コマンドは、ローカル ソース コードまたは GitHub リポジトリを指定するときに、コンテナー イメージをビルドして Azure Container Registry (ACR) にプッシュできます。 GitHub リポジトリから作業している場合、GitHub リポジトリに変更をコミットすると、新しいコンテナー イメージを自動的にビルドしてプッシュする GitHub Actions ワークフローが作成されます。

Container Apps 環境をカスタマイズする必要がある場合は、まず az containerapp env create コマンドを使用して環境を作成します。 既存の環境を指定しない場合、up コマンドはリソース グループ内の環境を検索し、見つかった場合はその環境を使用します。 見つからない場合は、Log Analytics ワークスペースを使用して環境が作成されます。

az containerapp up コマンドとそのオプションの詳細については、「az containerapp up」を参照してください。

前提条件

要件 手順
Azure アカウント お持ちでない場合は、無料のアカウントを作成してください。 続行するには、Azure サブスクリプションの "共同作成者" または "所有者" のアクセス許可が必要です。 詳細については、「Azure portal を使用して Azure ロールを割り当てる」を参照してください。
GitHub アカウント GitHub リポジトリを使用する場合は、無料でサインアップします。
Azure CLI Azure CLI をインストールします。
ローカル ソース コード ローカル ソース コードを使用する場合は、ローカル ソース コード ディレクトリが必要です。
既存のイメージ 既存のイメージを使用する場合は、レジストリ サーバー、イメージ名、タグが必要です。 プライベート レジストリを使用している場合は、資格情報が必要です。

設定

  1. Azure CLI を使用して Azure にサインインします。

    az login
    
  2. 次に、CLI 用の Azure Container Apps 拡張機能をインストールします。

    az extension add --name containerapp --upgrade
    
  3. 最新の拡張機能またはモジュールがインストールされたので、Microsoft.App 名前空間を登録します。

    az provider register --namespace Microsoft.App
    
  4. Azure Monitor Log Analytics ワークスペースの Microsoft.OperationalInsights プロバイダーを登録します。

    az provider register --namespace Microsoft.OperationalInsights
    

既存のイメージからデプロイする

パブリックまたはプライベート コンテナー レジストリに既存のイメージを使用するコンテナー アプリをデプロイできます。 プライベート レジストリからデプロイする場合は、--registry-server--registry-username、および --registry-password オプションを使用して資格情報を提供する必要があります。

この例では、az containerapp up コマンドは次のアクションを実行します。

  1. リソース グループを作成します。
  2. 環境と Log Analytics ワークスペースを作成します。
  3. イメージをパブリック レジストリからプルするコンテナー アプリを作成してデプロイします。
  4. 指定された値に設定されたターゲット ポートを使用して、コンテナー アプリのイングレスを外部に設定します。

次のコマンドを実行して、既存のイメージからコンテナー アプリをデプロイします。 <プレースホルダー> は実際の値に置き換えてください。

az containerapp up \
  --name <CONTAINER_APP_NAME> \
  --image <REGISTRY_SERVER>/<IMAGE_NAME>:<TAG> \
  --ingress external \
  --target-port <PORT_NUMBER> 

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 コマンドを使用してローカル ソースからデプロイすると、コンテナー イメージがビルドされ、レジストリにプッシュされ、コンテナー アプリがデプロイされます。 指定しない場合は、Azure Container Registry にレジストリが作成されます。

コマンドは、Dockerfile の有無にかかわらずイメージをビルドできます。 Dockerfile を使用せずにビルドする場合は、次の言語がサポートされます。

  • .NET
  • Node.js
  • PHP
  • Python

次の例は、ローカル ソース コードからコンテナー アプリをデプロイする方法を示しています。

この例では、az containerapp up コマンドは次のアクションを実行します。

  1. リソース グループを作成します。
  2. 環境と Log Analytics ワークスペースを作成します。
  3. Azure Container Registry 内のレジストリを作成します。
  4. コンテナー イメージをビルドします (存在する場合は Dockerfile を使用します)。
  5. イメージをレジストリにプッシュします。
  6. コンテナー アプリを作成してデプロイします。

次のコマンドを実行して、ローカル ソース コードからコンテナー アプリをデプロイします。

    az containerapp up \
      --name <CONTAINER_APP_NAME> \
      --source <SOURCE_DIRECTORY>\
      --ingress external 

Dockerfile に EXPOSE 命令が含まれている場合、up コマンドは Dockerfile の情報を使用してコンテナー アプリのイングレス ポートとターゲット ポートを構成します。

Dockerfile を使用してイングレスを構成した場合、またはアプリでイングレスを必要としない場合は、ingress オプションを省略できます。

コマンドの出力には、コンテナー アプリの URL が含まれます。

失敗した場合は、--debug オプションを指定してコマンドを再度実行し、失敗に関する詳細情報を取得できます。 Dockerfile なしでビルドが失敗した場合は、Dockerfile を追加してコマンドを再実行してみてください。

az containerapp up コマンドを使用して、更新されたイメージでコンテナー アプリを再デプロイするには、--resource-group および --environment 引数を含めます。 次の例は、ローカル ソース コードからコンテナー アプリを再デプロイする方法を示しています。

  1. ソース コードを変更します。

  2. 次のコマンドを実行します。

    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 ワークフローが生成されます。 レジストリを指定しない場合、コマンドは Azure Container Registry にレジストリを作成します。

イメージをビルドするには、Dockerfile が必要です。 Dockerfile に EXPOSE 命令が含まれている場合、コマンドは Dockerfile の情報を使用してコンテナー アプリのイングレス ポートとターゲット ポートを構成します。

次の例は、GitHub リポジトリからコンテナー アプリをデプロイする方法を示しています。

この例では、az containerapp up コマンドは次のアクションを実行します。

  1. リソース グループを作成します。
  2. 環境と Log Analytics ワークスペースを作成します。
  3. Azure Container Registry 内のレジストリを作成します。
  4. Dockerfile を使用してコンテナー イメージをビルドします。
  5. イメージをレジストリにプッシュします。
  6. コンテナー アプリを作成してデプロイします。
  7. GitHub Actions ワークフローを作成して、コンテナー イメージをビルドし、将来の変更が GitHub リポジトリにプッシュされたときにコンテナー アプリをデプロイします。

GitHub リポジトリからアプリをデプロイするには、次のコマンドを実行します。

az containerapp up \
  --name <CONTAINER_APP_NAME> \
  --repo <GitHub repository URL> \
  --ingress external 

Dockerfile を使用してイングレスを構成した場合、またはアプリでイングレスを必要としない場合は、ingress オプションを省略できます。

up コマンドは GitHub Actions ワークフローを作成するため、それを再実行してアプリのイメージに変更をデプロイすると、複数のワークフローが作成されるという望ましくない影響が生じます。 代わりに、GitHub リポジトリに変更をプッシュすると、GitHub ワークフローによってアプリが自動的にビルドおよびデプロイされます。 ワークフローを変更するには、GitHub でワークフロー ファイルを編集します。

次のステップ