使用Azure DevOps和Docker部署Web应用

在本教程中,将学习如何使用Azure DevOps和Docker将Web应用部署到Microsoft Azure的Web App Service。这个过程包括手动部署应用,设置持续集成(CI)和持续部署(CD)的流水线。

准备工作

在开始之前,请确保已经具备以下条件:

  • 一个包含ASP.NET Core(或类似技术)Web应用的GitHub仓库。
  • 一个Dockerfile,用于构建应用镜像。
  • Azure DevOps与GitHub的集成,以便自动触发构建。
  • Azure DevOps中的持续集成流水线,用于构建Docker镜像并推送到Docker Hub。

手动部署到Azure Web App Service

在进行自动化部署之前,首先手动部署应用,以确保其正常工作。

  1. 登录到Microsoft Azure门户。
  2. 从导航面板中选择App Services,然后选择“添加”。
  3. 在随后出现的窗口中:
    • 为应用提供一个名称。
    • 选择订阅。
    • 创建新的资源组或使用现有的资源组。
    • 选择所需的操作系统。
    • 在“发布”选项中,选择“Docker镜像”。
  4. 接下来,选择“配置容器”并提供想要用于应用的Docker镜像的详细信息。默认情况下,“单个容器”是激活的。选择Docker Hub作为镜像注册表,或者选择适用的其他注册表。选择注册表是私有的还是公开的,然后提供Docker镜像名称。
  5. 点击“应用”,将被重定向到上一页。点击“创建”,部署将在一些验证后开始,这些验证不会花费太长时间。
  6. 部署完成后,将收到通知。之后,如果刷新App Services页面,新创建的应用将出现在列表中。

恭喜!已经成功地将应用作为Docker容器部署到了Microsoft Azure App Services。

测试应用

现在是时候检查应用是否真的在工作了。

  1. 从App Services页面中选择应用。
  2. 现在,从概览窗格的右上角获取应用的URL。
  3. 在喜欢的浏览器中打开URL,应用应该在工作。

如果应用没有工作,首先检查日志。为此,转到“设置 > 容器设置”,将看到日志。

添加服务连接

为了使发布流水线能够自动在Azure App Services上部署应用,它需要访问Azure资源。

  1. 为了授予访问权限,请转到“项目属性 > 服务连接”,然后选择“新建服务连接”。
  2. 从列表中选择Azure Resource Manager,并在随后出现的模态窗口中填写详细信息。选择范围级别为“订阅”,然后选择订阅。稍后,选择为应用创建App Service的资源组。

Azure DevOps发布流水线

现在,是时候通过在Azure中创建发布流水线来自动化下一个发布。

  1. 转到Azure DevOps,选择组织和项目。
  2. 在“流水线”下,选择“发布”,然后点击“新建流水线”。让从顶部的文本字段开始,给流水线起一个好听的名字。

现在,让向流水线添加一个工件。点击“添加工件”,选择Docker Hub作为源类型。从下拉菜单中选择在前一篇文章中设置的服务连接。

选择想要为应用设置的命名空间和仓库。对于“默认版本”,可以选择“最新”或“在发布创建时指定”。这取决于需求。

如果选择“最新”,必须确保总是在构建流水线中将Docker镜像标记为“最新”。更喜欢使用另一个选项。

现在,需要向发布流水线添加一个阶段。点击“添加一个阶段”,选择“Azure Web App on Container Deploy”,并给它一个名字。然后切换到“任务”标签。

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

现在,选择第二个任务,在Azure订阅下,选择在前面步骤中设置的服务连接。之后,它会给一个应用程序列表供选择。最重要的是镜像名称。因此,请确保它与在构建流水线中设置的完全相同。

几乎完成了。但是,还没有启用发布流水线的自动触发器。让现在来做这件事。

  1. 返回到流水线标签。如果现在点击工件右上角的闪电符号,它允许启用持续部署触发器。所以,继续这样做。
  2. 也可以向触发器添加某些过滤器,如果愿意的话。但现在,会保持简单。最后,保存发布流水线。

测试CI/CD流水线(端到端测试)

最后,是时候测试到目前为止所做的一切了。

  1. 更改应用中的一些东西。
  2. 将更改推送到主分支。
  3. 构建流水线开始,并将新镜像推送到Docker Hub。
  4. 推送到Docker Hub触发发布流水线。
  5. 应用中的最新更改现在应该是可见的。

花点时间改变一些东西,可以用它来验证一切是否正常工作。实际上,也可以参考Azure App Service的日志,以验证当前正在运行的Docker镜像的标签。

首先,开发了一个基于ASP.NET Core的Web应用,并将代码放入了GitHub仓库。之后,设置了一个构建流水线,自动为应用构建Docker镜像,然后将其推送到Docker Hub。接下来,在本文中,创建了一个发布流水线,自动将应用作为Docker容器部署到Azure Web App服务上。

沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485