Docker 化你的 Flask 应用程序
Python提供了多种方式来分发你的Python项目。其中一种方法是使用一种称为 Docker 的重要技术。 Docker 是一个开源应用程序,允许管理员使用容器创建、管理、部署和复制应用程序。它基本上是一个平台,使开发人员能够通过将应用程序放入容器中来使其应用程序可移植。您可以使用它使您的Python项目可移植。 Docker 容器通过将您的项目与系统隔离来消除依赖问题。为您的项目创建的 Docker 映像可以移植到任何地方。 Docker 官方文档。在本文中,我们将看到一个示例,我们将在其中将 Flask 应用程序转换为 docker 映像,并查看 docker 的一些基本命令以及它。 Flask 是一个用于构建小型 Web 应用程序的微框架。我们只是将它用作Python项目的示例。可以以相同的方式使用任何其他Python项目。有关 Flask 的更多信息,请访问此处。
设置 Flask 和 Dockerfile
制作项目文件夹
打开你的终端并为你的烧瓶应用程序创建一个文件夹让我们说“flask_docker_demo”
通过执行以下命令:$mkdir flask_docker_demo $cd flask_docker_demo #to change the directory
您也可以手动创建文件夹及以上文件。如果您没有安装 Gedit,那么您可以使用任何代码编辑器。
在终端输入以下内容$gedit demo.py
将以下代码粘贴到“demo.py”中。
from flask import Flask app = Flask(__name__) @app.route('/') def hello(): return "welcome to the flask tutorials" if __name__ == "__main__": app.run(host ='0.0.0.0', port = 5001, debug = True)
将以下代码插入之前创建的 Dockerfile
添加一个新文件,如果您尚未使用 gedit 创建它,则名称为“Dockerfile”。不要给任何扩展。
将以下代码粘贴到其中FROM python:alpine3.7 COPY . /app WORKDIR /app RUN pip install -r requirements.txt EXPOSE 5001 ENTRYPOINT [ "python" ] CMD [ "demo.py" ]
让我们看看我们的 Dockerfile 做了什么。 FROM Python:alpine3.7 从 docker hub 拉取Python 3.7 的图像, COPY命令将烧瓶应用程序复制到容器中, WORKDIR命令设置工作目录。 “RUN pip install -r requirements.txt”这个命令将把写在“requirements.txt”文件中的每个需求一一安装到主机系统上。顾名思义, EXPOSE将 Flask 应用程序将使用的端口 5001 暴露给容器,以便稍后可以将其映射到系统的端口。入口点和 CMD 一起执行运行该文件的命令“Python demo.py”。
将以下内容复制到“requirements.txt”文件中
如果您尚未使用 gedit 创建 requirements.txt,请手动创建它,并将以下行添加到其中
flask
- 我们现在应该有以下结构。
测试烧瓶应用
如果你还没有在这个目录中,进入根文件夹“flask-docker-demo”并运行以下命令“Python demo.py”
它应该在“http://0.0.0.0:5001/”上启动我们的开发服务器,该服务器附带烧瓶。
请参阅下面的屏幕截图。我们应该在浏览器中有以下输出
按 CTRL + C 关闭服务器
再次刷新浏览器,由于服务器已关闭,它应该会出错。
创建项目的 docker 镜像以及如何运行它
构建 Docker 镜像
确保您位于项目的根目录中并运行以下命令。
sudo docker build --tag flask-docker-demo-app .
上面的命令将创建一个带有标签 flask-docker-demo-app 的应用程序。
注意:如果需要,请输入密码。请参阅下面的屏幕截图。
运行我们刚刚创建的 docker 镜像。
运行以下命令:
sudo docker run --name flask-docker-demo-app -p 5001:5001 flask-docker-demo-app
在上面的命令中,-name 参数为容器命名,-p 参数将主机(在本例中是我的笔记本电脑)的端口 5001 映射到容器的端口 5001,因为容器是隔离的,我们需要映射它才能访问它来自外部环境。最后,“flask-docker-demo-app”指的是要运行的镜像。再次测试 。
刷新浏览器
- 运行“ docker stop ”命令关闭镜像。要知道容器 id,请输入“ docker ps ”命令。它显示了所有正在运行的容器。访问 Docker 的网站以获取更多 docker 命令,例如“将图像保存为 tar 文件”并将其导出到另一个系统中。