Docs 菜单
Docs 主页
/ /

教程:将 Flask 应用部署到Azure容器应用

本教程向你展示如何对使用MongoDB Atlas 的Flask应用程序进行容器化并将其部署到Azure容器应用程序。 Azure容器应用是一个无服务器平台,可简化容器化应用程序的部署和管理,而无需管理基础架构。

本教程介绍如何完成以下任务:

  • 验证先决条件

  • 设置 Flask应用程序

  • 创建 Dockerfile

  • 创建Azure容器注册表

  • 构建并推送Docker映像

  • 创建和部署Azure容器应用

1

在开始之前,请完成以下步骤以满足先决条件:

  • GitHub存储库创建 Flask 和MongoDB应用程序

  • 安装Docker Desktop

  • 安装Microsoft Azure

  • 安装Python 3.9 或更高版本

  • 安装 Postman Desktop 或其他API测试工具

本教程还需要具有活动集群的MongoDB Atlas帐户和Microsoft Azure订阅。

2

通过运行以下命令来克隆 Flask应用程序存储库:

git clone https://github.com/mongodb-developer/atlas-flask-azure-demo

使用Atlas用户界面,在名为 bookshelf 的数据库中创建 books集合。使用以下示例文档作为指南,在集合中创建一些文档:

{
"book": "The Great Gatsby",
"pages": 180,
},
{
"book": "Slaughterhouse-Five",
"pages": 215,
},
{
"book": "If Beale Street Could Talk",
"pages": 197,
}

要启动应用程序,请导航到工作目录并运行以下命令:

flask run

使用浏览器或API测试工具访问权限/books 端点以检索您创建的文档。

3

Dockerfile 包含构建Docker映像的命令。在工作目录中创建一个名为Dockerfile 的文件,然后向其中添加以下内容:

FROM python:3.9-slim-buster
WORKDIR /azurecontainerappsdemo
COPY ./config/requirements.txt /azurecontainerappsdemo/
RUN pip install -r requirements.txt
COPY . /azurecontainerappsdemo/
ENV FLASK_APP=app.py
EXPOSE 5000
CMD ["flask", "run", "--host=0.0.0.0"]

requirements.txt文件移至名为 config 的新文件夹中,确保Docker可以在构建进程中找到并复制该文件。

此 Dockerfile 执行以下任务:

  • 使用 python:3.9-slim-buster 作为基础映像

  • 设置工作目录

  • 复制并安装Python依赖项

  • 复制应用程序文件

  • 公开端口 5000

  • 配置 Flask 以接受来自任何网络接口的连接

将以下代码添加到 app.py文件的底部,以确保 Flask 在所有网络接口上运行:

if __name__ == '__main__':
app.run(host='0.0.0.0', debug=True)

在部署到Azure之前,您可以验证Docker映像是否可以在本地运行。通过运行以下命令来构建映像:

docker build --tag azurecontainerappsdemo .

然后,通过运行以下命令运行带有MongoDB连接字符串的容器:

docker run -d -p 5000:5000 -e "CONNECTION_STRING=<MONGODB_ATLAS_URI_STRING_HERE>" azurecontainerappsdemo

容器运行后,请在浏览器中通过 http://localhost:5000访问权限应用程序。

4

登录Azure门户并导航到“容器注册表”服务。单击 Create 并指定注册表的以下设置:

  • 资源组:资源群组的名称

  • 注册表名称:作为您的登录URL

  • 位置:注册表的位置

注意

创建容器应用时,必须使用相同的资源组和位置值。

单击 Review and Create(连接)。

部署完成后,打开 Visual Studio Code。确保安装Docker扩展。

导航到 Registries,登录您的Azure帐户,然后连接您的注册表。

运行以下命令,登录Azure容器注册表:

docker login <azure registry url>

提示

您可以在容器注册表的 Access Keys 部分找到用户名和密码。启用 Admin Access 以查看凭证。

重要

如果您使用Windows,请右键单击以将凭证粘贴到终端中,以避免错误。

5

完成以下步骤,构建Docker映像并将其推送到Azure容器注册表。选择与您的操作系统和架构相对应的标签页:

通过运行以下命令来安装 Buildx:

docker buildx install

通过运行以下命令启用 Buildx:

docker buildx create --use

通过运行以下命令来构建 linux/amd64 平台的映像:

docker buildx build --platform linux/amd64 --t <azure registry url>/<image name>:<image tag> --output type=docker .

运行以下命令,将映像推送到Azure容器注册表:

docker push <azure registry url>/<image name>:<image tag>

通过运行以下命令来构建映像:

docker build --t <azure registry url>/<image name>:<image tag> --output type=docker .

通过运行以下命令来推送映像:

docker push <azure registry url>/<image name>:<image tag>

通过运行以下命令来构建映像:

docker build --t <azure registry url>/<image name>:<image tag> .

通过运行以下命令来推送映像:

docker push <image name>:<image tag>

要验证推送是否成功,请导航到Azure门户中的“容器注册表”,然后单击 Repositories 以查看映像。

6

导航到Azure门户中的容器应用服务,然后单击 Create

Basics 部分中,为您的容器应用配置以下设置:

  • 订阅:您的Azure订阅

  • 资源组:与您用于容器注册表的资源群组相同

  • 容器应用名称

  • 地区:与您用于容器注册表的地区相同

重要

如果这是您的第一个容器应用,请在创建应用时创建一个环境。容器应用环境为同一虚拟网络上的容器应用创建安全边界。

App Settings 部分配置以下设置:

  • 取消选中 Use quickstart image

  • 选择 Azure Container Registry 作为图像源

  • 输入注册表、映像和标签信息

将MongoDB Atlas连接字符串添加为名为 CONNECTION_STRING的环境变量。

启用入口并配置以下入口设置:

  • 入口流量:接受来自任何地方的流量

  • 入口类型: HTTP

  • 交通:汽车

  • 不安全连接:允许

  • 目标端口:5000

单击 Review and Create。部署完成后,单击 Go to Resource,然后单击 Application URL 以访问权限已部署的应用程序。

/books 附加到URL以查看之前从MongoDB Atlas数据库添加的图书。

若要查看本教程的完整代码,请参阅 GitHub 上的 azurecontainerappdemo存储库。

要学习;了解有关Azure容器应用的更多信息,请参阅Microsoft网站上的Azure容器应用文档。

后退

教程:测试和打包Python库

在此页面上