当前位置: 首页 > news >正文

用 Docker 构建你的第一个 Python Flask 程序

文章目录

  • 引言
  • 一、准备工作
  • 二、创建 Flask 应用程序
  • 三、创建 Dockerfile
  • 四、构建 Docker 镜像
  • 五、运行 Docker 容器
  • 六、总结与拓展


引言

       在当今的软件开发领域,容器化技术正变得越来越流行,而 Docker 无疑是其中的佼佼者。它能够帮助开发者轻松地构建、部署和运行应用程序,确保在不同环境中的一致性。Python Flask 是一个轻量级的 Web 框架,非常适合快速开发简单的 Web 应用程序。今天,我们就来探索如何使用 Docker 构建一个简单的 Python Flask 程序,实现经典的“Hello World”功能。

一、准备工作

       在开始之前,确保你的系统已经安装了 Docker。你可以访问 Docker 官方网站 下载并安装适合你操作系统的 Docker 版本。安装完成后,通过在终端(或命令提示符)运行以下命令来验证 Docker 是否正常工作:

docker --version

       如果返回了 Docker 的版本信息,那么说明安装成功。
在这里插入图片描述


二、创建 Flask 应用程序

       首先,我们需要创建一个基本的 Flask 应用程序。在你选择的工作目录下,创建一个名为 app.py 的文件,并输入以下代码:

#创建工作目录
richard@richard-virtual-machine:~$ mkdir first-docker-flask
#进入工作目录
richard@richard-virtual-machine:~$ cd first-docker-flask/
#创建文件
richard@richard-virtual-machine:~/first-docker-flask$ vim app.py
from flask import Flaskapp = Flask(__name__)@app.route('/')
def hello_world():return 'Hello, World! My name is {Your name}'if __name__ == '__main__':app.run(debug=True, host='0.0.0.0')

       这段代码非常简单。我们首先导入了 Flask 类,然后创建了一个 Flask 应用实例。通过使用 @app.route('/') 装饰器,我们定义了一个路由,当访问应用的根目录(即 /)时,会触发 hello_world 函数,返回“Hello, World!”字符串。最后,通过 app.run() 方法启动 Flask 应用,其中 host='0.0.0.0' 表示允许外部访问,debug=True 开启调试模式,方便我们在开发过程中进行调试。


三、创建 Dockerfile

       在同一个目录下,创建一个名为 Dockerfile 的文件。Dockerfile 是一个文本文件,包含了用于构建 Docker 镜像的指令。以下是我们的 Dockerfile 内容:

#创建文件
richard@richard-virtual-machine:~/first-docker-flask$ vim Dockerfile
# 使用官方 Python 基础镜像
FROM python:3.9-slim# 设置工作目录
WORKDIR /app# 将当前目录下的文件复制到工作目录中
COPY . /app# 安装依赖
RUN pip install Flask# 暴露端口
EXPOSE 5000# 启动 Flask 应用
CMD ["python", "app.py"]

让我们逐步解析一下这个 Dockerfile:

  • FROM python:3.9-slim:指定使用官方的 Python 3.9 瘦版本基础镜像。这个镜像已经包含了 Python 运行环境,能够满足我们运行 Flask 应用的基本需求,同时体积相对较小,有助于提高构建和部署效率。
  • WORKDIR /app:设置工作目录为 /app,后续的操作都会在这个目录下进行。
  • COPY . /app:将当前目录下的所有文件复制到工作目录中。这样,我们的 app.py 文件以及后续可能添加的其他文件都会被包含在镜像中。
  • RUN pip install Flask:运行命令安装 Flask 依赖。由于我们的应用需要 Flask 框架来运行,这里通过 pip 安装 Flask。
  • EXPOSE 5000:声明容器运行时将暴露端口 5000。虽然这不会实际发布端口,但为后续容器运行时的端口映射提供了参考。
  • CMD ["python", "app.py"]:指定容器启动时执行的命令,这里就是运行我们的 Flask 应用程序。

四、构建 Docker 镜像

       现在我们已经准备好了 Flask 应用程序代码和 Dockerfile,接下来就可以构建 Docker 镜像了。在终端中,切换到包含 app.pyDockerfile 的目录,然后运行以下命令:

docker build -t helloworld-flask .

       这里,docker build 是构建镜像的命令,-t 参数用于指定镜像的名称(这里是 flask-hello-world),最后的 . 表示使用当前目录下的 Dockerfile 来构建镜像。构建过程可能会花费一些时间,具体取决于你的网络状况和系统性能。在构建过程中,Docker 会按照 Dockerfile 中的指令逐步执行,下载基础镜像、安装依赖、复制文件等操作。

在这里插入图片描述


五、运行 Docker 容器

在这里插入图片描述

       镜像构建完成后,我们就可以通过 Docker 容器来运行我们的 Flask 应用程序了。在终端中运行以下命令:

docker run -p 5010:5000 helloworld-flask

       这个命令的含义是:启动一个名为 flask-hello-world 的 Docker 容器,并将容器内部的 5000 端口映射到宿主机的 5000 端口。这样,我们就可以通过访问宿主机的 5010 端口来访问运行在容器中的 Flask 应用程序了。

       打开你的浏览器,访问 http://localhost:5010,如果一切顺利,你应该会看到页面上显示“Hello, World!”,这表明我们的 Flask 应用程序已经成功运行在 Docker 容器中了。

在这里插入图片描述


六、总结与拓展

       通过上述步骤,我们成功地使用 Docker 构建并运行了一个简单的 Python Flask 程序“Hello World”。这个过程展示了 Docker 在简化应用程序部署方面的强大能力,即使是对于一个简单的 Flask 应用,也能让我们轻松地将其打包为一个独立的、可移植的容器镜像,无需担心环境配置问题。

       当然,这只是一个起点。在实际开发中,你的 Flask 应用可能会更加复杂,包含更多的依赖和配置。你可以通过修改 Dockerfile 来适应这些需求,例如添加更多的依赖安装指令、配置环境变量等。此外,Docker 还提供了许多高级功能,如 Docker Compose,可以让你更方便地管理多个容器的应用程序架构,实现服务的编排和部署。

       希望这篇文章能够激发你对 Docker 和 Flask 开发的兴趣,鼓励你进一步探索它们在实际项目中的应用。无论是构建小型的个人项目,还是大型的商业应用,Docker 和 Flask 都将是你的有力工具。

相关文章:

  • 娱乐网站建设公司谷歌浏览器中文手机版
  • 网站建设费用英文怎样制作网页
  • 清远佛冈住房和城乡建设局网站怎么让网站排名上去
  • 类似全民互推的推广平台福州seo网站推广优化
  • 深圳企业排名100强上海关键词优化外包
  • 手机本地建WordPress网站优化+山东
  • MiniMax-M1 混合专家模型与 DeepSeek 一体机的能效革命
  • 命名数据网络 | TLV 编码
  • 左神算法之有序二维矩阵中的目标值查找
  • Vue基础(16)_Vue侦听数据改变的原理(对象)、Vue.set/vm.$set方法的使用
  • 北斗导航 | 基于CNN-LSTM-PSO算法的接收机自主完好性监测算法
  • LeetCode 3258.统计满足K约束的子字符串数量1
  • 【智能协同云图库】智能协同云图库第二弹:用户管理系统后端设计与接口开发
  • AR美型SDK,重塑面部美学,开启智能美颜新纪元
  • 定制开发开源AI智能名片与S2B2C商城小程序的内容分发体系构建:基于“1+N“素材复用模型的创新实践
  • 如何在 Manjaro Linux 的图像界面上安装 Stremio 而不是使用命令行
  • 服务器不支持PUT,DELETE 的解决方案
  • C# Avalonia 的 Source Generators 用处
  • ZArchiver×亚矩云手机:云端文件管理的“超维解压”革命
  • 以太网基础②RGMII 与 GMII 转换电路设计
  • Spring AOP 中有多个切面时执行顺序是怎样的?
  • 深度学习的人工神经元
  • Node.js 版本管理工具对比:nvm、n、volta
  • 盘口语言 开盘三分钟知涨跌
  • Git常用操作详解
  • Java-中断流程控制