使用 az containerapp up 命令部署 Azure 容器应用

要从现有映像、本地源代码或 GitHub 存储库在 Azure 容器应用中部署应用,最快速的方法是使用 az containerapp up(或 up)命令。 通过这一条命令,可以在几分钟内启动并运行容器应用。

az containerapp up 命令是创建和部署主要使用默认设置的容器应用的简化方法。 但是,需要运行其他 CLI 命令来配置更高级的设置:

若要自定义容器应用的资源或缩放设置,可以依次使用 up 命令和 az containerapp update 命令来更改这些设置。 az containerapp up 命令不是 az containerapp update 命令的缩写。

up 命令可以创建或使用现有资源,包括:

  • 资源组
  • Azure 容器注册表
  • 容器应用环境和 Log Analytics 工作区
  • 你的容器应用

提供本地源代码或 GitHub 存储库时,该命令可以生成容器映像并将其推送到 Azure 容器注册表 (ACR)。 使用 GitHub 存储库时,该命令会创建一个 GitHub Actions 工作流,在你将更改提交到 GitHub 存储库时,该工作流会自动生成并推送新的容器映像。

如果需要自定义容器应用环境,请先使用 az containerapp env create 命令创建环境。 如果未提供现有环境,up 命令将在资源组中查找一个环境,如果找到,则使用该环境。 如果未找到,该命令将创建具有 Log Analytics 工作区的环境。

要了解有关 az containerapp up 命令及其选项的详细信息,请参阅az containerapp up

先决条件

要求 说明
Azure 帐户 如果没有,请创建一个试用版订阅。 需要拥有 Azure 订阅的“参与者”或“所有者”权限才能继续操作。 有关详细信息,请参阅使用 Azure 门户分配 Azure 角色
GitHub 帐户 如果使用的是 GitHub repo,则可以免费注册。
Azure CLI 安装 Azure CLI
本地源代码 如果使用的是本地源代码,则需要具有本地源代码目录。
现有映像 如果使用的是现有映像,则需要注册表服务器、映像名称和标记。 如果使用的是专用注册表,则需要凭据。

设置

  1. 通过 Azure CLI 登录 Azure。

    az cloud set -n AzureChinaCloud
    az login
    # az cloud set -n AzureCloud   //means return to Public Azure.
    
  2. 接下来,安装适用于 CLI 的 Azure 容器应用扩展。

    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. 将容器应用的入口设置为外部,目标端口设置为指定值。

运行以下命令以从现有映像部署容器应用。 将 <PLACEHOLDERS> 替换为你的值。

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

可以使用 up 命令重新部署容器应用。 如果要使用新映像重新部署,请使用 --image 选项指定新映像。 确保将 --resource-groupenvironment 选项设置为与原始部署相同的值。

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 容器注册表中创建注册表。

该命令可以生成包含或不含 Dockerfile 的映像。 如果在没有 Dockerfile 的情况下生成,则支持以下语言:

  • .NET
  • Node.js
  • PHP
  • Python

以下示例演示如何从本地源代码部署容器应用。

在此示例中,az containerapp up 命令执行以下操作:

  1. 创建资源组。
  2. 创建环境和 Log Analytics 工作区。
  3. 在 Azure 容器注册表中创建注册表。
  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 容器注册表中创建注册表。

需要 Dockerfile 才能生成映像。 当 Dockerfile 包含 EXPOSE 指令时,该命令将使用 Dockerfile 中的信息来配置容器应用程序的入口和目标端口。

以下示例演示如何从 GitHub 存储库部署容器应用。

在此示例中,az containerapp up 命令执行以下操作:

  1. 创建资源组。
  2. 创建环境和 Log Analytics 工作区。
  3. 在 Azure 容器注册表中创建注册表。
  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 中编辑工作流文件。

后续步骤