使用Docker构建Python Flask程序的详细教程

 更新时间:2025年07月06日 11:19:13   作者:慢热型网友.  
在当今的软件开发领域,容器化技术正变得越来越流行,而 Docker 无疑是其中的佼佼者,本文我们就来聊聊如何使用 Docker 构建一个简单的 Python Flask 程序吧

引言

在当今的软件开发领域,容器化技术正变得越来越流行,而 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 Flask

app = 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构建Python Flask程序的详细教程的文章就介绍到这了,更多相关Docker构建Python Flask程序内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • OpenCV-Python 实现两张图片自动拼接成全景图

    OpenCV-Python 实现两张图片自动拼接成全景图

    图片的全景拼接如今已不再稀奇,现在的智能摄像机和手机摄像头基本都带有图片自动全景拼接的功能,本文使用OpenCV-Python 实现两张图片自动拼接成全景图,感兴趣的可以了解一下
    2021-06-06
  • Python实现socket库网络通信套接字

    Python实现socket库网络通信套接字

    socket又叫套接字,实现网络通信的两端就是套接字。分为服务器对应的套接字和客户端对应的套接字,本文给大家介绍Python实现socket库网络通信套接字的相关知识,包括套接字的基本概念,感兴趣的朋友跟随小编一起看看吧
    2021-06-06
  • 如何理解python中数字列表

    如何理解python中数字列表

    在本篇文章里小编给大家分享的是关于python中数字列表知识点详解,有兴趣的朋友们可以参考下。
    2020-05-05
  • 实例讲解Python中的私有属性

    实例讲解Python中的私有属性

    这篇文章主要介绍了Python中的私有属性,本文用代码实例来帮助理解私有属性的一些技巧和使用方法,需要的朋友可以参考下
    2014-08-08
  • python处理xml文件的方法小结

    python处理xml文件的方法小结

    这篇文章主要介绍了python处理xml文件的方法,结合实例形式总结分析了Python常见的xml文件处理技巧与相关注意事项,需要的朋友可以参考下
    2017-05-05
  • Python生成艺术图案实例代码(分形、数学曲线)

    Python生成艺术图案实例代码(分形、数学曲线)

    这篇文章主要介绍了Python生成艺术图案(分形、数学曲线)的相关资料,主要讲解如何用Python的matplotlib和numpy库绘制分形与数学曲线,涵盖曼德勃罗集、科赫雪花、心形线等经典图形,需要的朋友可以参考下
    2025-08-08
  • pycharm没有找到manage repositories按钮的解决办法

    pycharm没有找到manage repositories按钮的解决办法

    这篇文章主要给大家介绍了关于pycharm没有找到manage repositories按钮的解决办法,pycharm是用来写python的可视化代码软件,文中通过图文介绍的非常详细,需要的朋友可以参考下
    2023-07-07
  • python中split方法用法分析

    python中split方法用法分析

    这篇文章主要介绍了python中split方法用法,实例分析了split方法的功能及相关使用技巧,非常具有实用价值,需要的朋友可以参考下
    2015-04-04
  • 通过Python把学姐照片做成拼图游戏

    通过Python把学姐照片做成拼图游戏

    马上就到毕业季了,你心中的那个学姐,你真的放下了吗?本文将用pygame为你的学姐,定制开发一个拼图游戏,感兴趣的快跟随小编一起学习一下
    2022-02-02
  • ElasticSearch Python 使用示例详解

    ElasticSearch Python 使用示例详解

    这篇文章主要介绍了ElasticSearch Python 使用示例详解,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2025-04-04

最新评论