在 Azure 中生成容器化的 Python Web 应用

本教程系列的这一部分介绍如何在 Azure 容器注册表 中直接生成容器化 Python Web 应用,而无需在本地安装 Docker。 在 Azure 中生成 Docker 映像通常比在本地创建映像更快、更轻松,然后将其推送到 Azure 容器注册表。 此外,基于云的映像生成无需在开发环境中运行 Docker。

应用服务使你能够运行容器化 Web 应用,并通过 Docker 中心、Azure 容器注册表和 Visual Studio Team Services 的持续集成/持续部署(CI/CD)功能部署它们。 本文是 5 部分教程系列的第 3 部分,介绍如何将 Python Web 应用容器化和部署到 Azure 应用服务。 本教程的这一部分介绍如何在 Azure 中生成容器化 Python Web 应用。

Azure 应用服务允许从 Docker 中心、Azure 容器注册表和 Azure DevOps 等平台使用 CI/CD 管道部署和运行容器化 Web 应用。 本文是 5 部分教程系列的第 3 部分。

在本教程系列的第 2 部分中,你在本地生成并运行了容器映像。 相反,在本教程的这一部分中,将同一 Python Web 应用直接生成到 Azure 容器注册表中的 Docker 映像中。 在 Azure 中生成映像通常比在本地生成更快、更容易,然后将映像推送到注册表。 此外,在云端构建不需要 Docker 在开发环境中运行。

Docker 映像进入 Azure 容器注册表后,即可将其部署到 Azure 应用服务。

此服务关系图突出显示了本文中介绍的组件。

《教程 - Azure 上的容器化 Python 应用》中使用的服务的屏幕截图,其中突出显示了云中生成的路径。

创建 Azure 容器注册表

如果已有要使用的 Azure 容器注册表,请跳过下一步,继续执行下一步。 否则,请使用 Azure CLI 创建新的 Azure 容器注册表。

可以在 Azure Cloud Shell安装了 Azure CLI 的本地开发环境中运行 Azure CLI 命令。

注意

使用与本教程系列的第 2 部分相同的名称。

  1. 使用 az acr create 命令创建 Azure 容器注册表。

    #!/bin/bash
    # Use the resource group that you created in part 2 of this tutorial series.
    RESOURCE_GROUP_NAME='msdocs-web-app-rg'
    # REGISTRY_NAME must be unique within Azure and contain 5-50 alphanumeric characters.
    REGISTRY_NAME='msdocscontainerregistryname'
    
    echo "Creating Azure Container Registry $REGISTRY_NAME..."
    az acr create -g $RESOURCE_GROUP_NAME -n $REGISTRY_NAME --sku Standard
    

    在命令的 JSON 输出中,找到 loginServer 该值。 此值表示完全限定的注册表名称(全部小写),并包含注册表名称。

  2. 如果在本地计算机上使用 Azure CLI,请执行 az acr login 命令以登录到容器注册表。

    az acr login -n $REGISTRY_NAME
    

    该命令将“azurecr.io”添加到名称,以创建完全限定的注册表名称。 如果成功,则会看到消息“登录成功”。

    注意

    在 Azure Cloud Shell 中,不需要 az acr login command ,因为身份验证是通过 Cloud Shell 会话自动处理的。 但是,如果遇到身份验证问题,仍可使用它。

在 Azure 容器注册表中生成映像

可以通过各种方法直接在 Azure 中生成容器映像:

  • 使用 Azure Cloud Shell 可以完全在云中构建映像,而独立于本地环境。
  • 或者,可以使用 VS Code 或 Azure CLI 从本地设置在 Azure 中创建它,而无需在本地运行 Docker。

Azure CLI 命令可以在安装了 Azure CLI 的本地开发环境中运行,也可以在 Azure Cloud Shell 中运行。

  1. 在控制台中,从本教程系列的第 2 部分导航到克隆存储库的根文件夹。

  2. 使用 az acr build 命令生成容器映像。

    az acr build -r $REGISTRY_NAME -g $RESOURCE_GROUP_NAME -t msdocspythoncontainerwebapp:latest .
    # When using Azure Cloud Shell, run one of the following commands instead:
    # az acr build -r $REGISTRY_NAME -g $RESOURCE_GROUP_NAME -t msdocspythoncontainerwebapp:latest https://github.com/Azure-Samples/msdocs-python-django-container-web-app.git
    # az acr build -r $REGISTRY_NAME -g $RESOURCE_GROUP_NAME -t msdocspythoncontainerwebapp:latest https://github.com/Azure-Samples/msdocs-python-flask-container-web-app.git
    

    命令中的最后一个参数是存储库的完全限定路径。 在 Azure Cloud Shell 中运行时,请 https://github.com/Azure-Samples/msdocs-python-django-container-web-app.git 用于 Django 示例应用和 https://github.com/Azure-Samples/msdocs-python-flask-container-web-app.git Flask 示例应用。

  3. 使用 az acr repository list 命令确认已创建容器映像。

    az acr repository list -n $REGISTRY_NAME
    

下一步