你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

教程:生成应用并将其部署到 Azure 容器应用

本文演示如何使用首选编程语言从源存储库生成微服务并将其部署到 Azure 容器应用。

这是系列文章中的第一篇教程,指导你了解如何在 Azure 容器应用中使用核心功能。 第一步是创建一个返回音乐专辑静态集合的后端 Web API 服务。

注意

还可以按照快速入门:从存储库生成应用并将其部署到 Azure 容器应用一文中的说明,使用 az containerapp up 生成和部署此应用。 az containerapp up 命令是使用单个命令生成应用并将其部署到 Azure 容器应用的快速便捷的方法。 但是,它不会为容器应用提供相同级别的自定义。

本系列的下一篇教程将生成前端 Web 应用程序并将其部署到 Azure 容器应用。

以下屏幕截图显示了本教程中部署的专辑 API 的输出。

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

先决条件

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

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

有关详细信息,请参阅使用 Azure 门户分配 Azure 角色
GitHub 帐户 免费注册。
git 安装 git
Azure CLI 安装 Azure CLI
要求 说明
Azure 帐户 如果你没有帐户,请免费创建一个。 需要拥有 Azure 订阅的“参与者”或“所有者”权限才能继续操作。 有关详细信息,请参阅使用 Azure 门户分配 Azure 角色
GitHub 帐户 免费注册。
git 安装 git
Azure CLI 安装 Azure CLI
Docker Desktop Docker 提供了用于在 macOSWindowsLinux 上配置 Docker 环境的安装程序。

在命令提示符下,键入 docker 以确保 Docker 正在运行。

设置

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

az login

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

az upgrade

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

az extension add --name containerapp --upgrade

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

注意

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

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

创建环境变量

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

在 bash shell 中定义以下变量。

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

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

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

ACR_NAME="acaalbums"$GITHUB_USERNAME

准备 GitHub 存储库

导航到首选语言的存储库并创建该存储库的分支。

选择专辑 API 存储库顶部的“创建分支”按钮,以在你的帐户中创建该存储库的分支。

现在可以克隆示例存储库的分支。

使用以下 git 命令将分支存储库克隆到 code-to-cloud 文件夹:

git clone https://github.com/$GITHUB_USERNAME/containerapps-albumapi-csharp.git code-to-cloud

接下来,将目录切换到克隆的存储库所在的根目录。

cd code-to-cloud/src

创建 Azure 资源组

创建一个资源组来组织与你的容器应用部署相关的服务。

az group create \
  --name $RESOURCE_GROUP \
  --location "$LOCATION"

创建 Azure 容器注册表

生成相册 API 容器映像后,在资源组中创建一个 Azure 容器注册表 (ACR) 实例来存储该映像。

az acr create \
  --resource-group $RESOURCE_GROUP \
  --name $ACR_NAME \
  --sku Basic \
  --admin-enabled true

生成应用程序

使用 ACR 任务可为专辑 API 生成和推送 Docker 映像,而无需在本地安装 Docker。

使用 ACR 生成容器

运行以下命令,以使用 ACR 启动映像生成和推送过程。 该命令末尾的 . 表示 Docker 生成上下文,即,此命令应在 Dockerfile 所在的 src 文件夹中运行。

az acr build --registry $ACR_NAME --image $API_NAME .

az acr build 命令的输出会显示将源代码上传到 Azure 的进度,以及 docker builddocker push 操作的详细信息。

生成应用程序

以下步骤演示如何使用 Docker 在本地生成容器映像,并将该映像推送到新的容器注册表。

使用 Docker 生成容器

以下命令为专辑 API 生成容器映像,并使用 ACR 登录服务器的完全限定名称来标记该映像。 该命令末尾的 . 表示 Docker 生成上下文,即,此命令应在 Dockerfile 所在的 src 文件夹中运行。

docker build --tag $ACR_NAME.azurecr.io/$API_NAME .

将映像推送到容器注册表

首先登录到你的 Azure 容器注册表。

az acr login --name $ACR_NAME

现在,将映像推送到注册表。

docker push $ACR_NAME.azurecr.io/$API_NAME

创建容器应用环境

Azure 容器应用环境充当一组容器应用周围的安全边界。

使用以下命令创建容器应用环境。

az containerapp env create \
  --name $ENVIRONMENT \
  --resource-group $RESOURCE_GROUP \
  --location "$LOCATION"

将映像部署到容器应用

创建环境后,接下来可以使用 az containerapp create 命令创建并部署容器应用。

使用以下命令创建并部署容器应用。

az containerapp create \
  --name $API_NAME \
  --resource-group $RESOURCE_GROUP \
  --environment $ENVIRONMENT \
  --image $ACR_NAME.azurecr.io/$API_NAME \
  --target-port 8080 \
  --ingress 'external' \
  --registry-server $ACR_NAME.azurecr.io \
  --query properties.configuration.ingress.fqdn
  • 通过将 --ingress 设置为 external,可以从公共 Internet 访问你的容器应用。

  • target-port 设置为 8080,以匹配容器正在为请求侦听的端口。

  • 如果未指定 query 属性,对 az containerapp create 的调用会返回一条 JSON 响应,其中包含丰富的有关应用程序的详细信息。 添加查询参数可将输出筛选成应用的完全限定的域名 (FQDN)。

验证部署

将 FQDN 复制到 Web 浏览器。 在 Web 浏览器中,导航到 FQDN 的 /albums 终结点。

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

清理资源

如果你不打算继续学习微服务之间的通信教程,可以删除在本快速入门中创建的 Azure 资源。 运行以下命令以删除资源组,以及在本快速入门中创建的所有资源。

az group delete --name $RESOURCE_GROUP

提示

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

后续步骤

本快速入门是循序渐进的系列教程的第一篇,其中展示了 Azure 容器应用中的各项功能。 请继续了解如何从一个调用本文中部署的 API 的 Web 前端启用通信。