65.9K
CodeProject 正在变化。 阅读更多。
Home

使用 Microsoft Azure 作为 Docker 容器构建和部署 ASP.NET Core Web 应用程序 - 第 3 部分

starIconstarIconstarIconstarIconstarIcon

5.00/5 (4投票s)

2019 年 9 月 10 日

CPOL

6分钟阅读

viewsIcon

5693

在本文中,我们将设置一个发布触发器,以便每次推送代码时,都能自动将我们的应用程序部署到 Azure App Service 作为 Docker 容器。

引言

这是关于使用 Microsoft Azure 构建 ASP.NET Core Web 应用程序并将其作为 Docker 容器部署的系列文章的最后一部分。在这里,我们将设置一个 Microsoft Azure DevOps 发布管道,以自动化我们将应用程序作为容器部署到 Azure Web App Service 的过程。

如果您一直关注,您应该已经有了

  • 一个带有 ASP.NET Core (或类似) Web 应用程序的 GitHub 存储库
  • 一个用于构建应用程序镜像的 Dockerfile
  • Azure DevOps Pipelines 与 GitHub 集成,以自动触发生成
  • Azure DevOps 中的持续集成管道,用于构建 Docker 镜像并将其推送到 Docker Hub

该系列文章的三部分

手动部署到 Azure Web App Service

在我们进行任何自动化之前,让我们先手动部署应用程序并看看它是否正常工作。为此,请转到 Microsoft Azure 门户并提供登录详细信息。

从导航面板中,选择“App Services”,然后选择“添加”。在接下来的窗口中

  • 为您的应用程序提供名称
  • 选择订阅
  • 您可以创建一个新的资源组或使用现有的资源组
  • 选择所需的操作系统
  • 对于“发布”,选择“Docker 镜像

下一步是选择“配置容器”并提供有关您要用于应用程序的 Docker 镜像的详细信息。默认情况下,“单个容器”处于活动状态。选择“Docker Hub”作为镜像注册表,或任何适用的注册表。选择您的注册表是私有的还是公开的,然后提供您的 Docker 镜像的名称。

单击“应用”后,您将被重定向到上一个页面。单击“创建”,部署将在进行一些短暂验证后开始。

部署完成后,您将收到一条通知。之后,如果您刷新“App Services”页面,新创建的应用将出现在列表中。

恭喜!!您已成功将应用程序作为 Docker 容器部署到 Microsoft Azure App Services。

测试应用程序

现在是时候检查您的应用程序是否真正正常工作了。从“App Services”页面,选择您的应用。然后,从概述窗格的右上角,获取应用程序的 URL。

在您喜欢的浏览器中打开该 URL,您应该会看到您的应用程序正在运行。这是我的

如果应用程序未正常工作,您首先要检查的是日志。为此,请转到“设置 > 容器设置”,您将看到日志。看起来是这样的

添加服务连接

为了让发布管道能够自动将您的应用程序部署到 Azure App Services,它需要访问 Azure 资源。

为了授予访问权限,请转到“项目属性 > 服务连接”,然后选择“新建服务连接”。

从列表中,选择“Azure Resource Manager”并填写接下来的模态窗口中的详细信息。选择“订阅”作为范围级别,然后选择您的订阅。之后,选择您为应用程序创建 App Service 的资源组。

Azure DevOps 发布管道

好的!现在是时候通过在 Azure 中创建发布管道来自动化我们的下一个发布了。转到 Azure DevOps,选择您的组织和项目。

在“Pipelines”下,选择“Releases”,然后单击“New pipeline”。让我们首先使用顶部的文本字段为您的管道命名。

添加生成构件

现在,让我们向管道添加一个构件。单击“Add an artifact”并选择“Docker Hub”作为源类型。从下拉列表中,选择我们在上一篇文章中设置的 Docker Hub 服务连接。

选择您希望为应用程序设置的命名空间和存储库。对于“默认版本”,您可以选择“Latest”或“Specify at the time of release creation”。这取决于您的需求。

如果您选择“Latest”,则必须确保在生成管道中始终将 Docker 镜像标记为“latest”。我更喜欢使用另一个选项。

向管道添加任务

现在我们需要向发布管道添加一个阶段。单击“Add a stage”并选择“Azure Web App on Container Deploy”并为其命名。然后切换到“Tasks”选项卡。

任务列表中的第一个条目是代理设置,我们将选择“Hosted Ubuntu 1604”作为代理池。其余的可以保留原样。

现在,选择第二个任务,在“Azure subscription”下,选择我们之前步骤中设置的服务连接。之后,它会为您提供可供选择的应用列表。最重要的是镜像名称。因此,请确保它与您在生成管道中设置的完全相同。

我们在这里差不多完成了。但是,还有一件事缺失了。我们还没有启用发布管道的自动触发器。现在让我们来做。

回到“Pipeline”选项卡。如果现在单击构件右上角的闪电符号,它将允许您启用持续部署触发器。所以,继续吧。

如果您愿意,还可以为触发器添加某些过滤器。但现在,我将保持简单。最后,保存发布管道。

测试 CI/CD 管道(端到端测试)

最后,是时候测试我们迄今为止所做的一切了。为此

  • 更改应用程序中的某些内容
  • 将更改推送到 master 分支
  • 生成管道启动并将新镜像推送到 Docker Hub
  • 推送到 Docker Hub 会触发发布管道
  • 您应用程序的最新更改现在已可见

花点时间更改一些您可以用来验证一切是否正常的内容。事实上,您也可以查看 Azure App Service 的日志,以验证当前正在运行的是哪个 Docker 镜像标签。

例如,在上图的日志中,请注意用绿色方块突出显示的日志。这表明我设置的 Azure DevOps Pipelines 正在工作。

非常非常祝贺!!我们成功地实现了目标。

结论

首先,我们开发了一个基于 ASP.NET Core 的 Web 应用程序,并将代码放在 GitHub 存储库中。之后,我们设置了一个生成管道来自动构建我们应用程序的 Docker 镜像,然后将其推送到 Docker Hub。接下来,在本文中,我们创建了一个发布管道,以将我们的应用程序作为 Docker 容器自动部署到 Azure Web App 服务。

我希望您也一切顺利,但是,如果您在本系列文章的任何部分遇到问题,我将非常乐意为您提供帮助。

历史

  • 2019 年 9 月 10 日:初始版本
© . All rights reserved.