快速入门:从存储库生成应用并部署到 Azure 容器应用

本文演示如何使用所选的编程语言从 GitHub 存储库生成一个微服务并将其部署到 Azure 容器应用。 在本快速入门中,将创建一个示例微服务,该微服务表示返回音乐专辑的静态集合的后端 Web API 服务。

有两个版本中提供了此示例应用程序。 一个版本包括一个容器,其中源包含 Dockerfile。 另一个版本没有 Dockerfile。 请选择最能反映源代码的版本。 如果不熟悉容器,请选择顶部的“无 Dockerfile”选项。

注意

还可以从本地文件系统生成和部署此示例应用程序。 有关详细信息,请参阅从本地源代码生成并在 Azure 容器应用中部署应用程序

以下屏幕截图显示你部署的专辑 API 的输出。

屏幕截图显示来自相册 API 终结点的响应。

先决条件

若要完成此项目,需要满足以下条件:

要求 说明
Azure 帐户 如果没有,请创建一个试用版订阅。 需要拥有 Azure 订阅的“参与者”或“所有者”权限才能继续操作。

有关详细信息,请参阅使用 Azure 门户分配 Azure 角色
GitHub 帐户 免费获得一个。
git 安装 git
Azure CLI 安装 Azure CLI

设置

若要从 CLI 登录到 Azure,请运行以下命令,然后按照提示完成身份验证过程。

az cloud set -n AzureChinaCloud
az login
# az cloud set -n AzureCloud   //means return to Public Azure.

为了确保运行最新版本的 CLI,请运行升级命令。

az upgrade

接下来,安装或更新适用于 CLI 的 Azure 容器应用扩展。

如果在 Azure CLI 中运行 az containerapp 命令,或在 Azure PowerShell 中运行 Az.App 模块中的 cmdlet 时收到有关缺少参数的错误,请确保已安装最新版本的 Azure 容器应用扩展。

az extension add --name containerapp --upgrade

注意

从 2024 年 5 月开始,Azure CLI 扩展不再默认启用预览功能。 要访问容器应用预览功能,请使用 --allow-preview true 安装容器应用扩展。

az extension add --name containerapp --upgrade --allow-preview true

现在已安装当前扩展或模块,接下来请注册 Microsoft.AppMicrosoft.OperationalInsights 命名空间。

注意

Azure 容器应用资源已从 Microsoft.Web 命名空间迁移到 Microsoft.App 命名空间。 如需更多详细信息,请参阅 2022 年 3 月的从 Azure.Web 到 Microsoft.App 的命名空间迁移

az provider register --namespace Microsoft.App
az provider register --namespace Microsoft.OperationalInsights

创建环境变量

完成 Azure CLI 安装后,接下来可以定义要在本文中使用的环境变量。

在 bash shell 中定义以下变量。

export RESOURCE_GROUP="album-containerapps"
export LOCATION="canadacentral"
export ENVIRONMENT="env-album-containerapps"
export API_NAME="album-api"
export GITHUB_USERNAME="<YOUR_GITHUB_USERNAME>"

在运行此命令之前,请确保将 <YOUR_GITHUB_USERNAME> 替换为你的 GitHub 用户名。

接下来,定义一个对你而言唯一的容器注册表名称。

export ACR_NAME="acaalbums"$GITHUB_USERNAME

准备 GitHub 存储库

在浏览器窗口中,转到首选语言的 GitHub 存储库并创建该存储库的分支。

选择专辑 API 存储库顶部的“创建分支”按钮,以在你的帐户中创建该存储库的分支。 然后复制存储库 URL,以在下一步中使用它。

在浏览器窗口中,转到首选语言的 GitHub 存储库,并分叉包括分支的存储库。

选择专辑 API 存储库顶部的“创建分支”按钮,以在你的帐户中创建该存储库的分支。 取消选中“仅复制 main 分支”以同时为分支分叉 buildpack


生成并部署容器应用

使用 containerapp up 命令从分支 GitHub 存储库生成并部署第一个容器应用。 此命令将会:

  • 创建资源组
  • 创建具有 Log Analytics 工作区的容器应用环境
  • 创建 Azure 容器注册表
  • 创建 GitHub 操作工作流以生成和部署容器应用
  • 创建资源组
  • 创建具有 Log Analytics 工作区的容器应用环境
  • 自动创建默认注册表作为环境的一部分
  • 创建 GitHub 操作工作流以生成和部署容器应用

将新代码推送到存储库时,GitHub 操作将:

  • 生成容器映像并将其推送到 Azure 容器注册表
  • 将容器映像部署到创建的容器应用

up 命令使用存储库根目录中的 Dockerfile 生成容器映像。 Docker 文件中的 EXPOSE 指令定义目标端口。 生成容器应用不需要 Docker 文件。

  • 自动检测语言和运行时
  • 使用适当的 Buildpack 生成映像
  • 将映像推送到 Azure 容器应用默认注册表

需要访问容器应用才能进入流量。 确保公开端口 8080 以侦听传入请求。

在以下命令中,将 <YOUR_GITHUB_REPOSITORY_NAME> 替换为 https://github.com/<OWNER>/<REPOSITORY-NAME><OWNER>/<REPOSITORY-NAME> 格式的 GitHub 存储库名称。

在以下命令中,将 <YOUR_GITHUB_REPOSITORY_NAME> 替换为 https://github.com/<OWNER>/<REPOSITORY-NAME><OWNER>/<REPOSITORY-NAME> 格式的 GitHub 存储库名称。 使用 --branch buildpack 选项指向没有 Dockerfile 的示例源。

az containerapp up \
  --name $API_NAME \
  --resource-group $RESOURCE_GROUP \
  --location $LOCATION \
  --environment $ENVIRONMENT \
  --context-path ./src \
  --repo <YOUR_GITHUB_REPOSITORY_NAME>
az containerapp up \
  --name $API_NAME \
  --resource-group $RESOURCE_GROUP \
  --location $LOCATION \
  --environment $ENVIRONMENT \
  --context-path ./src \
  --ingress external \
  --target-port 8080 \
  --repo <YOUR_GITHUB_REPOSITORY_NAME>
  --branch buildpack
  --

使用 URL 和终端中显示的用户代码,转到浏览器中的 GitHub 设备激活页并在该页输入用户代码。 按照提示授权 Azure CLI 访问 GitHub 存储库。

up 命令将在存储库的 .github/workflows 文件夹中创建 GitHub 操作工作流。 将更改推送到存储库时,会触发工作流来生成和部署容器应用。


验证部署

containerapp up 返回的域名复制到 Web 浏览器。 在 Web 浏览器中,转到 URL 的 /albums 终结点。

屏幕截图显示来自相册 API 终结点的响应。

清理资源

如果不打算继续学习部署前端教程,可以使用以下命令移除在本快速入门中创建的 Azure 资源。

注意

以下命令删除指定的资源组及其包含的所有资源。 如果组包含超出本快速入门范围的资源,这些资源也将被删除。

az group delete --name $RESOURCE_GROUP

提示

遇到问题? 在 Azure 容器应用存储库中提交问题,告知我们有关 GitHub 的信息。

后续步骤

完成本快速入门后,可以继续学习教程:Azure 容器应用中的微服务之间的通信,了解如何部署调用 API 的前端应用程序。