概述:使用 MongoDB 在 Azure 上容器化 Python Web 应用

本教程提供分步指南,介绍如何将 Python Web 应用容器化和部署到 Azure。 该应用使用 azure 应用服务 托管,并使用 MongoDB for Azure Cosmos DB 来存储数据。 Azure 应用服务的用于容器的 Web 应用 抽象化容器业务流程,简化部署过程,并允许专注于开发。 有关 Azure 容器选项的详细信息,请参阅 比较 Azure 容器选项

在本教程中,你将:

  • 在本地生成并运行 Docker 容器。 此步骤是可选的。

  • 直接在 Azure 中生成 Docker 容器映像。

  • 配置应用服务以基于 Docker 容器映像创建 Web 应用。

完成本教程后,您将具备将 Python web 应用持续集成(CI)和持续部署(CD)到 Azure 的基础。

服务概述

本教程支持的服务关系图显示了两个环境:开发人员环境和 Azure。 它突出显示了开发过程中使用的关键 Azure 服务。

教程 - Azure 上的容器化 Python 应用中使用的服务的屏幕截图。

开发人员环境

本教程中支持开发人员环境的组件包括:

  • 本地开发系统:用于编码、生成和测试 Docker 容器的个人电脑。

  • Docker 容器化:Docker 用于将应用及其依赖项打包到可移植容器中。

  • 开发工具:包括代码编辑器和其他用于软件开发的必要工具。

  • 本地 MongoDB 实例:开发期间用于数据存储的本地 MongoDB 数据库。

  • MongoDB 连接:访问通过连接字符串提供的本地 MongoDB 数据库。

Azure 环境

本教程中支持 Azure 环境的组件包括:

  • Azure 应用服务

    • 在 Azure 应用服务中,用于容器的 Web 应用使用 Docker 容器技术来使用 Docker 提供内置映像和自定义映像的容器托管。
    • 用于容器的 Web 应用使用 Azure 容器注册表 (ACR) 中的 Webhook 来获取新映像的通知。 将新映像推送到注册表时,Webhook 通知会触发应用服务拉取更新并重启应用。
  • Azure 容器注册表

    • Azure 容器注册表允许在 Azure 中存储和管理 Docker 映像及其组件。 它提供位于 Azure 中部署附近的注册表,使你能够使用 Microsoft Entra 组和权限来控制访问。

    • 在本教程中,Azure 容器注册表是注册表源,但也可以使用 Docker 中心或专用注册表进行轻微修改。

  • Azure Cosmos DB for MongoDB

    • Azure Cosmos DB for MongoDB 是本教程中用于数据存储的 NoSQL 数据库。

    • 容器化应用通过连接字符串(存储为环境变量)访问 Azure Cosmos DB 资源。

    • 通过容器化应用访问 Azure Cosmos DB 资源是通过连接字符串,该连接字符串作为环境变量传递给容器化应用。

认证

在本教程中,你将在本地或直接在 Azure 中生成 Docker 映像,然后将其部署到 Azure 应用服务。 应用服务从 Azure 容器注册表存储库拉取容器映像。

为了从存储库中安全拉取映像,应用服务使用系统分配的托管标识。 此托管标识授予 Web 应用与其他 Azure 资源交互的权限,无需显式凭据。 在本教程中,托管标识会在安装应用程序服务期间进行配置以使用注册表容器映像。

本教程示例 Web 应用使用 MongoDB 来存储数据。 示例代码通过连接字符串连接到 Azure Cosmos DB。

先决条件

若要完成本教程,需要:

示例应用

在本教程中,你将构建一个 Python 餐厅评审应用,该应用利用 MongoDB 进行数据存储。 有关使用 PostgreSQL 的示例,请参阅 使用托管标识创建 Flask Web 应用并将其部署到 Azure。

本教程的最终结果是在 Azure 中部署和运行的餐馆评审应用,如下所示。

在 Azure 上通过 Python 容器化 Web 应用创建的示例应用的屏幕截图 - 容器化 Python 应用。

下一步