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

相关推荐
QiZhang | UESTC7 分钟前
JAVA算法练习题day27
java·开发语言·c++·算法·leetcode·hot100
坚持就完事了10 分钟前
2-C语言中的数据类型
c语言·开发语言
ss27332 分钟前
手写MyBatis第96弹:异常断点精准捕获MyBatis深层BUG
java·开发语言·bug·mybatis
程序员小远35 分钟前
常用的测试用例
自动化测试·软件测试·python·功能测试·测试工具·职场和发展·测试用例
IT学长编程38 分钟前
计算机毕业设计 基于EChants的海洋气象数据可视化平台设计与实现 Python 大数据毕业设计 Hadoop毕业设计选题【附源码+文档报告+安装调试】
大数据·hadoop·python·毕业设计·课程设计·毕业论文·海洋气象数据可视化平台
辣椒http_出海辣椒1 小时前
Python 数据抓取实战:从基础到反爬策略的完整指南
python
Stanford_11061 小时前
关于嵌入式硬件需要了解的基础知识
开发语言·c++·嵌入式硬件·微信小程序·微信公众平台·twitter·微信开放平台
荼蘼1 小时前
使用 Flask 实现本机 PyTorch 模型部署:从服务端搭建到客户端调用
人工智能·pytorch·python
白水先森1 小时前
Python 运算符与列表(list)
java·开发语言
(时光煮雨)1 小时前
【Python进阶】Python爬虫-Selenium
爬虫·python·selenium