📜  Docker 化你的 Flask 应用程序

📅  最后修改于: 2022-05-13 01:55:40.833000             🧑  作者: Mango

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 文件”并将其导出到另一个系统中。