【Python】 如何用 Docker 打包一个 Python 脚本


这是我父亲 日记里的文字

这是他的生命 留下留下来的散文诗

几十年后 我看着泪流不止

可我的父亲已经 老得像一个影子

🎵 许飞《父亲写的散文诗》


如何用 Docker 打包一个 Python 脚本

Docker 是一个开源的容器化平台,允许开发者将应用程序及其所有依赖项打包成一个标准化的单元,以便在任何环境中一致地运行。在这篇博客中,我们将演示如何使用 Docker 来打包一个简单的 Python 脚本,使其可以在任何支持 Docker 的环境中运行。

步骤 1:准备 Python 脚本

首先,我们需要一个简单的 Python 脚本。为了演示,我们创建一个名为 app.py 的脚本,内容如下:

python 复制代码
# app.py
import requests

def fetch_github():
    response = requests.get("https://api.github.com")
    if response.status_code == 200:
        print("GitHub API is reachable.")
    else:
        print("Failed to reach GitHub API.")

if __name__ == "__main__":
    fetch_github()

这个脚本使用 requests 库来请求 GitHub API,并打印出相应的消息。

步骤 2:创建 requirements.txt

接下来,我们需要创建一个 requirements.txt 文件,列出我们的 Python 脚本所需的依赖项。在当前目录下创建 requirements.txt 文件,内容如下:

requests
步骤 3:编写 Dockerfile

Dockerfile 是 Docker 用来构建镜像的指令文件。在项目的根目录下创建一个名为 Dockerfile 的文件,内容如下:

Dockerfile 复制代码
# 使用官方 Python 基础镜像
FROM python:3.9-slim

# 设置工作目录
WORKDIR /app

# 复制当前目录的内容到容器中的 /app 目录
COPY . /app

# 安装依赖
RUN pip install --no-cache-dir -r requirements.txt

# 运行 Python 脚本
CMD ["python", "app.py"]

这份 Dockerfile 文件包含以下几个部分:

  • FROM 指令指定了基础镜像,这里使用的是轻量级的 python:3.9-slim。
  • WORKDIR 指令设置了容器中的工作目录。
  • COPY 指令将当前目录的所有内容复制到容器中的 /app 目录。
  • RUN 指令运行 pip install 命令来安装依赖项。
  • CMD 指令指定了容器启动时执行的命令,这里是运行 app.py 脚本。
步骤 4:构建 Docker 镜像

在项目根目录下打开终端,运行以下命令构建 Docker 镜像:

bash 复制代码
docker build -t python-app .

这将使用当前目录中的 Dockerfile 构建一个名为 python-app 的镜像。

步骤 5:运行 Docker 容器

构建完成后,可以使用以下命令运行 Docker 容器:

bash 复制代码
docker run --rm python-app
  • --rm 标志表示容器在退出时会自动删除。

运行上述命令后,你应该会看到类似如下的输出:

csharp 复制代码
GitHub API is reachable.

这表示我们的 Python 脚本已经成功运行,并且能够访问 GitHub API。

总结

通过以上步骤,我们演示了如何使用 Docker 将一个简单的 Python 脚本打包成一个可移植的容器镜像。Docker 不仅可以简化开发和部署流程,还能确保在不同环境中的一致性,使得应用程序更加稳定和可靠。

相关推荐
Pandaconda几秒前
【C++ 面试 - 新特性】每日 3 题(六)
开发语言·c++·经验分享·笔记·后端·面试·职场和发展
这不巧了几秒前
Faker在pytest中的应用
python·自动化·pytest
chanTwo_004 分钟前
go--知识点
开发语言·后端·golang
悟空丶1234 分钟前
go基础知识归纳总结
开发语言·后端·golang
北南京海16 分钟前
【C++入门(5)】类和对象(初始类、默认成员函数)
开发语言·数据结构·c++
oennn欧冷16 分钟前
中文关键字检索分析-导出到csv或者excel-多文件或文件夹-使用python和asyncio和pandas的dataframe
python·pandas·vba·asyncio·dataframe·completablefuture
小言从不摸鱼23 分钟前
【NLP自然语言处理】文本处理的基本方法
人工智能·python·自然语言处理
hummhumm31 分钟前
数据库系统 第46节 数据库版本控制
java·javascript·数据库·python·sql·json·database
别挡33 分钟前
CentOS Stream 8中安装和使用 Docker
linux·docker·centos
Mr_Xuhhh34 分钟前
C语言深度剖析--不定期更新的第六弹
c语言·开发语言·数据结构·算法