现已发布!了解 11 月的新功能和修复。

将容器化应用部署到 Azure

在本指南中,您将学习如何

  • 为您的应用程序创建容器映像。
  • 将映像推送到容器注册表。
  • 将映像部署到 Azure 应用服务或 Azure 容器应用。

先决条件

创建应用程序映像

如果您已经有一个映像,请跳过此步骤,继续执行将映像推送到容器注册表步骤。

  1. 在 VS Code 中打开应用程序文件夹。

  2. 打开命令面板 (⇧⌘P (Windows, Linux Ctrl+Shift+P)),并使用 Docker Images: Build Image... 命令构建映像。

    Build container image

    您可以在“构建映像”命令的输出中找到映像名称,也可以在 Docker 资源管理器的“映像”窗格中找到。

    Build image output

将映像推送到容器注册表

在将映像部署到应用服务或容器应用之前,必须将映像上传到容器注册表。 可以将映像上传到Azure 容器注册表 (ACR)Docker Hub

  1. 打开 Docker 资源管理器,在“注册表”组下选择 连接注册表... 图标,然后按照提示操作。选择提供商(Azure 或 Docker Hub)并提供凭据以连接到注册表。

    Connect to Registry

  2. 现在,注册表将在“注册表”下可见。

    Registries

  3. (可选)标记映像。为了将映像上传到注册表,需要使用注册表名称标记映像,以便 docker push 将其上传到正确的注册表。

    • 要在 Azure ACR 中创建注册表,请打开 Docker 视图的 注册表 部分,登录到 Azure(如果尚未登录),然后右键单击要使用的订阅,并选择 创建注册表

    • 上一节中构建的映像将显示在 Docker 资源管理器的“映像”部分下。右键单击并选择 标记...

      Tag image

    • 指定新名称 <您的注册表或用户名>/<映像名称>:<标记> 并完成标记操作。例如,名为 WebApp6 的 ACR 的新映像名称将为“webapp6.azurecr.io/webapp6:latest”,而 Docker Hub 的新映像名称将为“myusername/webapp6:latest”。

  4. 该映像将显示在 Docker 资源管理器中映像标记指向的注册表下。选择此映像,然后选择 推送。如果该映像尚未标记,系统将提示您选择要推送到的注册表,并且将根据选择标记该映像。

    Push image

  5. 推送命令完成后。刷新推送映像的注册表节点,将显示上传的映像。

    Refresh registry

将映像部署到 Azure

在上一节中,映像已推送到远程容器注册表。现在,将此映像部署到 Azure 应用服务或 Azure 容器应用。

  1. 在 Docker 资源管理器中,导航到“注册表”下的映像,右键单击标记,然后选择 将映像部署到 Azure 应用服务...将映像部署到 Azure 容器应用...

    Deploy to Azure App Service

  2. 出现提示时,提供应用服务或容器应用的值。

    • 新的 Web 应用名称:该名称在 Azure 中必须是唯一的。
    • 资源组:选择现有资源组或创建新资源组。
    • 应用服务计划:选择现有应用服务计划或创建新的应用服务计划。(应用服务计划定义托管网站的物理资源;您可以为此教程使用基本或免费计划层)。
  3. 部署完成后,Visual Studio Code 将显示包含网站 URL 的通知。

    Deployment complete notification

  4. 您还可以在 Visual Studio Code 的“输出”面板的“Docker”部分中查看结果。

    Deployment complete output

  5. 要浏览部署的网站,可以使用 Ctrl+单击 在“输出”面板中打开 URL。您可能需要等待一段时间才能使该应用在 Azure 中上线。新的应用服务或容器应用也会显示在 Visual Studio Code 的“Azure”视图中,您可以在其中右键单击该网站并选择 浏览网站

    Web Application

后续步骤

继续阅读以了解更多关于

  • Azure 扩展 - VS Code 市场有数百个 Azure 和云的扩展。
  • 部署到 Azure - 了解如何逐步将应用程序部署到 Azure。
  • 使用 MongoDB - 从 VS Code 内创建、管理和查询 MongoDB 数据库。