如果你是Docker和容器的新手,学习在Docker上部署Python Flask API应用程序是一个很好的开始。Docker让你可以使用轻量级技术和安全性来容器化应用程序,实现快速部署。
在本教程中,你将学会如何在Docker容器上设置和部署Python Flask API应用程序,成为自己的主人。
准备好了就开始部署吧!
前提条件
如果你想一步一步地跟着做,你需要安装以下软件:
- 已安装Docker的Ubuntu机器。本教程使用的是带有Docker v19.03.8的Ubuntu 18.04.5 LTS。
- 已在Ubuntu机器上安装Python v3.9或更高版本。本教程将使用Ubuntu机器上的Python v3.9.2。
- 已安装在用于测试本教程中API的Ubuntu机器上的Elinks软件包。
创建Python Flask API应用程序(GET和POST API)
通过创建一个Python Flask应用程序来开始本教程。Flask是一个轻量级的WSGI微网络应用框架,用Python编写。Flask提供了便利的工具和功能来创建Python网络应用。
在创建Python Flask应用程序之前,您将安装Python Flask和Python虚拟环境,其中Flask将运行应用程序。
1. 使用您喜欢的SSH客户端登录到您的Ubuntu机器。
2. 接下来,运行以下命令创建一个名为~/docker_python_flask_demo的目录,并切换到该目录。此目录将保存Python和Docker运行应用程序所需的所有文件。
3. 运行下面的pip
命令来安装
Python虚拟环境(virtualenv
),Flask需要它来执行应用程序。Python虚拟环境提供了自己的Python二进制文件和每个应用程序安装的软件包,以避免与其他应用程序的冲突。

4. 执行下面的virtualenv
命令来创建和激活虚拟环境使用venv
模块。

5. 现在,运行以下命令使用pip
包管理器安装Python flask
包。
6. 运行以下命令来激活你的虚拟环境中的包,然后你才能开始安装或使用它们。这会修改VIRTUAL_ENV
环境变量,指向你的虚拟环境,并将虚拟环境的Python二进制文件路径添加到路径中,以便你运行正确的二进制文件。
7. 创建一个名为requirements.txt的文件,并定义Flask应用程序的依赖关系,如下所示。
8. 创建一个文本文件~/docker_python_flask_demo/app.py,并使用下面的Python代码填充该文件。
下面的Python代码导入Python flask
类,并创建一个名为app
的类实例。app
类实例包含两个login()
函数,当用户在/login
页面发送请求时执行。然后执行success()
函数,在浏览器上显示欢迎消息“用户名”。
9. 创建另一个名为 ~/docker_python_flask_demo/form.html 的文件,并复制/粘贴下面的代码。
运行下面的 HTML 代码会创建一个具有两个输入的表单;一个用于提供您的姓名,另一个是提交按钮。
一旦您提供了用户名并点击提交按钮,就会发送一个 POST 请求,Flask 将执行另一个函数并在 http://localhost:5000/success/<username> 上打开一个新的网页。
10. 最后,运行下面的 Python
命令来验证应用程序(app.py
)在您的系统上本地运行正常。
如下所示,该应用程序在 Ubuntu 机器上成功运行,但在 Docker 上不成功。您将在以下部分中在 Docker 上启动相同的应用程序。

创建 Dockerfile 部署 Python Flask API 应用程序
您刚刚创建并验证了 Python Flask 应用程序在您的机器上本地正常工作。但在将应用程序部署到 Docker 上之前,您首先需要创建一个 Dockerfile 来定义构建 Docker 镜像 的所有指令集。
在 ~/docker_python_flask_demo 目录中创建一个名为 Dockerfile 的文件,并复制/粘贴下面的内容到 Dockerfile 中。
Docker 将使用此 Dockerfile 运行所有构建新 Docker 镜像所需的指令或命令,该镜像是基于基础镜像(ubuntu:18.04
)构建的。
现在,请运行下面的 tree
命令,以验证所有运行 Python Flask 应用程序所需的文件是否包含在工作目录中(~/docker_python_flask_demo)。

为 Python Flask API 应用程序构建 Docker 镜像
现在您已经拥有部署 Python Flask 应用程序所需的文件,但这些文件不会起作用,除非您构建一个镜像。您将运行 docker build
命令,根据 Dockerfile 中设置的指令构建一个 Docker 镜像。
运行以下docker build
命令在工作目录(。
)中构建Docker镜像。此命令使用标签(-t
)将镜像命名为flask-image
版本1(:v1
)。

现在,运行以下docker
命令以列出所有可用的镜像。
下面,您可以看到返回的各种属性,如仓库。注意仓库名称是flask-image,并带有版本标签(v1),如下所示。

在Docker容器中运行Python Flask应用程序
创建Docker镜像后,您现在可以在Docker容器中运行Python Flask应用程序。Docker容器将代码及其依赖项打包起来,以便快速运行应用程序。
1. 执行以下docker run
命令以执行以下操作:
- 以分离模式运行容器(
-d
),使其作为后台进程运行,并在创建时返回控制台输出。 - 将Docker主机端口(
-p 5000:5000
)映射到容器的端口。 - 启动Docker容器(
flask-image:v1
)。
2. 接下来,运行以下docker
命令,列出Docker引擎中的所有容器。验证Docker是否成功创建了容器。

3. 最后,运行以下命令,使用elinks在Ubuntu机器上打开您的Web浏览器。
该命令在终端上打开Web浏览器并提示输入名称,如下所示。
输入您的名称并点击提交按钮。

4. 如下所示,点击提交按钮后,登录功能将重定向到Flask应用程序中的成功功能。

结论
本教程旨在帮助您设置Python Flask API Docker容器的过程,使用Docker镜像。您还了解了如何使用Dockerfiles启动Python Flask容器,这使您能够编辑和构建自定义选择的容器。
那么您有没有其他应用程序打算部署在Docker容器上呢?也许是一个Docker MongoDB容器?