Flask 是 Python Web 应用程序框架,具有轻量级、可插拔和易于学习的特点。在开发完成后,如何将 Flask 应用程序部署到服务器上呢?本文将介绍使用 Docker 部署 Flask 应用程序的详细步骤,并通过示例代码演示。
为什么使用 Docker 部署 Flask 应用程序
在传统部署方式中,我们需要手动安装和配置服务器上的环境,如 Python、Flask 及其所需的第三方库、数据库和 Web 服务器等。不同的服务器和操作系统环境可能存在差异,安装和配置工作量大,难以维护。
而使用 Docker 技术部署 Flask 应用程序,我们只需要编写一个 Dockerfile,描述环境和应用程序的依赖关系,Docker 将自动构建一个完全相同的容器,无需手动安装和配置环境,也方便了版本管理和迁移。此外,Docker 还可以将多个容器组合起来,形成一个应用程序的完整运行环境,方便扩展、升级和测试。
前置条件
在使用 Docker 部署 Flask 应用程序前,需要先安装好 Docker 工具和 Docker Compose 工具。Docker 是一种容器技术,可以虚拟出多个隔离的操作系统,使得应用程序在相互之间的环境不会发生冲突。Docker Compose 是 Docker 的一个工具,用于定义和运行多个 Docker 容器的应用程序。
安装 Docker 和 Docker Compose,请参考官方文档:
编写 Dockerfile
创建一个名为 Dockerfile 的文件,放在 Flask 应用程序的根目录下。
Dockerfile 的基本结构如下:
# 基础镜像 FROM python:3.7-slim-buster # 环境变量 ENV FLASK_APP=app.py # 时区设置 ENV TZ=Asia/Shanghai RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone # 工作目录 WORKDIR /app # 复制应用程序代码 COPY . /app # 安装依赖 RUN pip install --no-cache-dir -r requirements.txt # 暴露端口 EXPOSE 5000 # 启动命令 CMD ["flask", "run", "--host=0.0.0.0"]
Dockerfile 指令的含义:
FROM
: 指定基础镜像为官方提供的 Python 3.7 Slim 版本。Slim 版本相比于标准版体积更小,适合在容器内使用。ENV
: 设置环境变量,此处设定 Flask 应用程序的主模块为 app.py。RUN
: 执行命令,在容器中安装所需的第三方库和系统工具。这里安装应用程序所需的依赖库,requirements.txt 文件中存放了需要安装的库名称和版本号。EXPOSE
: 暴露应用程序的运行端口,这里设置为 5000 端口。WORKDIR
: 设置容器的工作目录,将应用程序代码复制到容器内的该目录下,并在之后的构建和运行过程中使用该目录作为工作目录。CMD
: 容器启动命令,启动 Flask 应用程序。
编写 docker-compose.yml 文件
在与 Dockerfile 所在的目录下,创建一个名为 docker-compose.yml 的文件,用于描述容器服务。
docker-compose.yml 的基本结构如下:
version: '3' services: flask: build: . ports: - "5000:5000"
docker-compose.yml 文件中的用语:
version
: Docker Compose 版本,此处使用版本 3。services
: 容器服务配置项,这里只配置了一个服务flask
。build
: 指定 Dockerfile 所在的路径,将该目录下的 Dockerfile 文件作为构建上下文进行构建。ports
: 端口映射,将 Docker 容器内部的端口 5000 映射到外部服务器的 5000 端口。
构建和运行容器
在 docker-compose.yml 文件所在的目录下,执行以下命令:
$ docker-compose build $ docker-compose up
以上命令将根据 docker-compose.yml 和 Dockerfile 文件中的配置项,构建容器并启动服务。
docker-compose build
:构建容器,执行 Dockerfile 文件中的指令,在容器中安装依赖库和系统工具,以及安装 Flask 应用程序。docker-compose up
:启动服务,启动容器中的 Flask 应用程序,并将容器的 5000 端口映射到服务器的 5000 端口。执行该命令后,在服务器的浏览器中输入http://服务器ip地址:5000
,即可访问 Flask 应用程序。
示例代码
以上是部署 Flask 应用程序的详细步骤,下面给出一个简单的示例代码,演示如何编写 Flask 应用程序,并将其部署到 Docker 容器中。
创建一个名为 app.py 的文件,代码如下:
from flask import Flask app = Flask(__name__) @app.route('/') def index(): return 'Hello, World!' if __name__ == '__main__': app.run()
在与 Dockerfile 和 docker-compose.yml 相同的目录中创建一个名为 requirements.txt 的文件,存放依赖库名称和版本号,这里只需添加 Flask 即可:
Flask==1.1.2
总结
本文介绍了使用 Docker 技术部署 Flask 应用程序的详细步骤。使用 Docker 技术可以方便我们在不同环境下部署和运行应用程序,从而减少了安装和配置环境的工作量,提高了开发效率和部署精度。除了 Flask 应用程序,大部分 Web 应用程序都可以使用 Docker 进行部署,希望本文能对使用 Docker 技术部署 Web 应用程序有所帮助。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/6595ff31eb4cecbf2d9e7da0