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

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

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

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

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

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

创建 Azure 容器注册表

如果已有可以使用的 Azure 容器注册表,请转到下一步。 如果没有,请创建一个。

可以在 Azure Cloud Shell 中或装有 Azure CLI 的工作站上运行 Azure CLI 命令。 在 Cloud Shell 中运行时,请跳过 步骤 3

  1. 使用“az group create”命令创建资源组(如果需要)。 如果您已经在本教程的 2 部分为 MongoDB 设置了 Azure Cosmos DB 帐户,并在本地生成和测试了容器,请将 RESOURCE_GROUP_NAME 环境变量设置为您用于该帐户的资源组名称,然后继续执行下一步。

    RESOURCE_GROUP_NAME='msdocs-web-app-rg'
    LOCATION='eastus'
    
    az group create -n $RESOURCE_GROUP_NAME -l $LOCATION
    

    LOCATION 应为 Azure 位置值。 选择你附近的位置。 可以使用以下命令列出 Azure 位置值:az account list-locations -o table

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

    REGISTRY_NAME='<your Azure Container Registry name>'
    
    az acr create -g $RESOURCE_GROUP_NAME -n $REGISTRY_NAME --sku Basic
    

    REGISTRY_NAME在 Azure 中必须是唯一的,并且包含 5-50 个字母数字字符。

    在命令的 JSON 输出中,查找 loginServer 值,该值是完全限定的注册表名称(所有小写),应包括指定的注册表名称。

  3. 如果在本地运行 Azure CLI,请使用 az acr login 命令登录到注册表。

    az acr login -n $REGISTRY_NAME
    

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

    注意

    Cloud Shell 中不需要或不支持 az acr login 命令。

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

可以通过多种方式直接在 Azure 中生成容器映像。 首先,可以使用 Azure Cloud Shell 来生成映像,而无需使用本地环境。 还可以使用 VS Code 或 Azure CLI 从本地环境生成 Azure 中的容器映像。 在云中生成映像不需要 Docker 在本地环境中运行。 如果需要,可以按照本教程第 2 部分中的克隆或下载示例应用中的说明获取示例 Flask 或 Django Web 应用。

可以在安装了 Azure CLI 的工作站上运行 Azure CLI 命令,也可以在 Azure Cloud Shell中运行。 在 Cloud Shell 中运行时,请跳过 步骤 1

  1. 如果要在本地运行 Azure CLI,并且尚未使用 az acr login 命令登录到注册表,请使用该命令登录到注册表。

    az acr login -n $REGISTRY_NAME
    

    如果访问注册表的订阅不同于创建注册表的订阅,请使用 --suffix 开关。

    注意

    不需要 az acr login 命令,并且 Cloud Shell 中不受支持。

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

    az acr build -r $REGISTRY_NAME -g $RESOURCE_GROUP_NAME -t msdocspythoncontainerwebapp:latest .
    

    在此命令中:

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

    az acr repository list -n $REGISTRY_NAME
    

下一步