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

文章目录

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

引言

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

一、准备工作

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

复制代码
docker --version

如果返回了 Docker 的版本信息,那么说明安装成功。


二、创建 Flask 应用程序

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

powershell 复制代码
#创建工作目录
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
python 复制代码
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 内容:

powershell 复制代码
#创建文件
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 都将是你的有力工具。

相关推荐
try2find4 分钟前
安装llama-cpp-python踩坑记
开发语言·python·llama
博观而约取1 小时前
Django ORM 1. 创建模型(Model)
数据库·python·django
精灵vector2 小时前
构建专家级SQL Agent交互
python·aigc·ai编程
Zonda要好好学习3 小时前
Python入门Day2
开发语言·python
Vertira3 小时前
pdf 合并 python实现(已解决)
前端·python·pdf
太凉3 小时前
Python之 sorted() 函数的基本语法
python
项目題供诗3 小时前
黑马python(二十四)
开发语言·python
高山莫衣3 小时前
Docker Desktop导致存储空间不足时的解决方案
docker·容器·eureka
鹏大师运维3 小时前
在银河麒麟V10 SP1上手动安装与配置高版本Docker的完整指南
linux·运维·docker·容器·麒麟·统信uos·中科方德
lovely_nn3 小时前
docker 介绍
docker·k8s