本教程系列的这一部分介绍如何在 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 容器注册表
如果已有要使用的 Azure 容器注册表,请跳过下一步,继续执行下一步。 否则,请使用 Azure CLI 创建新的 Azure 容器注册表。
可以在 Azure Cloud Shell 或 安装了 Azure CLI 的本地开发环境中运行 Azure CLI 命令。
注意
使用与本教程系列的第 2 部分相同的名称。
使用 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
该值。 此值表示完全限定的注册表名称(全部小写),并包含注册表名称。如果在本地计算机上使用 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 中运行。
在控制台中,从本教程系列的第 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 示例应用。
使用 az acr repository list 命令确认已创建容器映像。
az acr repository list -n $REGISTRY_NAME