【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 不仅可以简化开发和部署流程,还能确保在不同环境中的一致性,使得应用程序更加稳定和可靠。

相关推荐
意倾城3 分钟前
Docker常见命令解读
docker·容器
Stara05111 小时前
基于多头自注意力机制(MHSA)增强的YOLOv11主干网络—面向高精度目标检测的结构创新与性能优化
人工智能·python·深度学习·神经网络·目标检测·计算机视觉·yolov11
Java致死1 小时前
设计模式Java
java·开发语言·设计模式
zh_xuan1 小时前
c++ 类的语法3
开发语言·c++
那雨倾城2 小时前
使用 OpenCV 将图像中标记特定颜色区域
人工智能·python·opencv·计算机视觉·视觉检测
belldeep4 小时前
如何阅读、学习 Tcc (Tiny C Compiler) 源代码?如何解析 Tcc 源代码?
c语言·开发语言
LuckyTHP4 小时前
java 使用zxing生成条形码(可自定义文字位置、边框样式)
java·开发语言·python
我没有开挂5 小时前
旧 docker 版本通过 nvkind 搭建虚拟多节点 gpu 集群的坑
运维·docker·容器
小鸡,啄米6 小时前
centos9安装docker 配置docker代理
运维·docker·容器
mahuifa6 小时前
(7)python开发经验
python·qt·pyside6·开发经验