当前位置: 首页 > news >正文

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


这是我父亲 日记里的文字
这是他的生命 留下留下来的散文诗
几十年后 我看着泪流不止
可我的父亲已经 老得像一个影子
                     🎵 许飞《父亲写的散文诗》


如何用 Docker 打包一个 Python 脚本

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

步骤 1:准备 Python 脚本

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

# app.py
import requestsdef 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 的文件,内容如下:

# 使用官方 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 镜像:

docker build -t python-app .

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

步骤 5:运行 Docker 容器

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

docker run --rm python-app
  • –rm 标志表示容器在退出时会自动删除。

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

GitHub API is reachable.

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

总结

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

相关文章:

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

这是我父亲 日记里的文字 这是他的生命 留下留下来的散文诗 几十年后 我看着泪流不止 可我的父亲已经 老得像一个影子 🎵 许飞《父亲写的散文诗》 如何用 Docker 打包一个 Python 脚本 Docker 是一个开源的容器化平台,允许开发者将…...

从“幕后”到“台前”:一文读懂API经济如何促进企业的创新与增长

API(Application Programming Interface,应用程序接口)指一组定义软件程序如何与其他组件、服务或系统交互的规范。在传统的IT语境中,API往往更多承担前后端对接或应用系统间内部集成渠道的作用。但在当今大数据与智能化的时代&am…...

解锁PDF新姿势:2024年PDF转图片工具精选

随着数字化办公的普及和文档处理需求的日益增长,PDF转图片工具已成为日常工作中不可或缺的一部分。这些工具不仅帮助用户轻松地将PDF文件转换为图片格式,还提供了丰富的编辑、转换和批量处理功能,极大地提高了工作效率。 1.福昕PDF转换大师&…...

Node.js(8)——Express的基本使用

监听GET请求 通过app.get()方法,可以监听客户端GET请求,具体语法: app.get(请求URL,function(req,res){处理函数}) 监听POST请求 语法: app.post(请求URL,function(req,res){处理函数}) 把内容响应给客户端 通过res.send()方法…...

Linux--应用层协议HTTP

HTTP协议 HTTP协议(HyperText Transfer Protocol,超文本传输协议)是互联网上应用最为广泛的一种网络协议,它基于TCP/IP通信协议来传送数据,规定了浏览器与服务器之间数据传输的规则,确保数据能够在网络源头…...

Flux:Midjourney的新图像模型挑战者

--->更多内容&#xff0c;请移步“鲁班秘笈”&#xff01;&#xff01;<--- Black Forest Labs是一家由前Stability.ai开发人员创立的AI初创公司&#xff0c;旨在为图像和视频创建尖端的生成式 AI 模型。这家初创公司声称&#xff0c;其第一个模型系列Flux.1为文本到图像…...

RabbitMQ高级特性 - 消费者消息确认机制

文章目录 RabbitMQ 消息确认机制背景消费者消息确认机制概述手动确认&#xff08;RabbitMQ 原生 SDK&#xff09;手动确认&#xff08;Spring-AMQP 封装 RabbitMQ SDK&#xff09;AcknowledgeMode.NONEAcknowledgeMode.AUTO&#xff08;默认&#xff09;AcknowledgeMode.MANUAL…...

PermX-htb

0x01 立足 信息收集 端口扫描 nmap -sSCV -Pn 10.10.11.23 正常开启22和80端口 访问web页面 并没有看到有攻击点 这个页面可先记录一会儿有需要的话可以尝试xss获取cookie 域名扫描 ffuf -w 1.txt -u http://permx.htb/ -H Host:FUZZ.permx.htb 这里用的ffuf扫描工具 扫出了…...

解密RCE漏洞:原理剖析、复现与代码审计实战

在网络安全领域&#xff0c;远程代码执行&#xff08;RCE&#xff09;漏洞因其严重性和破坏力而备受关注。RCE漏洞允许攻击者在目标系统上执行任意代码&#xff0c;从而掌控整个系统&#xff0c;带来极大的安全风险。理解RCE漏洞的工作原理&#xff0c;并掌握其复现与代码审计技…...

打造智能家居:用React、Node.js和WebSocket构建ESP32设备控制面板(代码说明)

一、项目概述 在物联网&#xff08;IoT&#xff09;时代&#xff0c;智能设备的远程控制变得越来越重要。本文介绍了一个构建智能设备控制面板的项目&#xff0c;允许用户通过 Web 应用来控制多个 ESP32 设备。用户可以通过该面板查看设备列表&#xff0c;实时了解设备状态&am…...

计网:从输入URL到网页显示期间发生了什么

1、URL包含的信息 我们输入的url中包含着一些信息&#xff1a; http&#xff1a;表示的此次我们使用的什么协议/www.baidu.com&#xff1a;表示的是我们想要访问的服务器名称&#xff0c;也就是域名dir3/home.html&#xff1a;表示我们所要访问的资源 2、通过DNS解析URL获得I…...

龚宇引以为傲的“爆款制造营”,爱奇艺怕是要爽约了

文&#xff1a;互联网江湖 作者&#xff1a;刘致呈 人们经常用人红戏不红&#xff0c;来形容毯星&#xff0c;综艺上咋咋呼呼&#xff0c;一提都知道&#xff0c;可问及代表作&#xff0c;不好意思&#xff0c;这个真没有。 今年的爱奇艺&#xff0c;貌似也迎来了这一宿命。 …...

org.springframework.web.client.HttpClientErrorException$NotFound异常

springCloud报错信息&#xff1a;org.springframework.web.client.HttpClientErrorException$NotFound: 404 null第一点&#xff1a; 第二点&#xff1a;没有httpclient工具类 注入RestTmeplate类时&#xff0c;改类需要RestController或ResponseBody...

在开关电源转换器中充分利用碳化硅器件的性能优势

在过去的几十年中&#xff0c;半导体行业已经采取了许多措施来改善基于硅 MOSFET &#xff08;parasitic parameters&#xff09;&#xff0c;以满足开关转换器(开关电源)设计人员的需求。行业效率標準以及市场对效率技术需求的双重作用&#xff0c;导致了对于可用于构建更高效…...

QObject::connect: Cannot queue arguments of type ‘QList<QString>‘

QObject::connect: Cannot queue arguments of type ‘QList’ QObject::connect: Cannot queue arguments of type QList<QString> (Make sure QList<QString> is registered using qRegisterMetaType().)使用信号和槽时&#xff0c;QList无法当做参数被传递&…...

基于K8S部署安装Jenkins

基于K8S部署安装Jenkins 1.Jenkins Kubernetes 清单文件2.Kubernetes Jenkins 部署1&#xff1a;为 Jenkins 创建 Namespace。 最好将所有DevOps工具分类为与其他应用程序分开的命名空间。2&#xff1a;创建“serviceAccount.yaml”文件并复制以下管理员服务帐户清单。1. kubec…...

24-8-4-读书笔记(十三)-《莎士比亚全集》(第一卷(续)) [英] 威廉·莎士比亚 [译]朱生豪

文章目录 《莎士比亚全集》(第一卷(续))目录阅读笔记记录总结《莎士比亚全集》(第一卷(续)) 《莎士比亚全集》朱生豪的经典译本,非常值得花时间去读一读,莎氏的巨作有其独特的韵味,与莫里哀、契诃夫、曹禺等其他国家的剧作家有其鲜明的特点,这既是源于其所处的时代…...

linux nicstat

nicstat 是一个用于监控和报告网络接口统计信息的工具。它可以提供关于网络接口的详细性能数据&#xff0c;包括传输速率、错误率、丢包率等。nicstat 对于诊断网络性能问题和优化网络配置非常有用。 安装 nicstat nicstat 可能不在所有Linux发行版的默认软件库中&#xff0c…...

程序员如何积累人脉?光靠技术不行了~

从事技术的人&#xff0c;还没被社会“塑造”前&#xff0c;总会有一个“固有思维”&#xff0c;就是这个世界大概率是“由代码和逻辑主宰的世界”&#xff0c;人脉积累并不在考虑范围内&#xff0c;而我们也常被误解为只懂得与机器对话的technician。 事实上&#xff0c;游戏…...

初识增强现实(AR)

初识增强现实&#xff08;AR&#xff09; 笔记来源&#xff1a; 1.2023年中国增强现实&#xff08;AR&#xff09;行业研究报告 2.wiki/Augmented reality 3.In-Depth Review of Augmented Reality: Tracking Technologies, Development Tools, AR Displays, Collaborative AR…...

保姆级教程:在RflySim仿真平台用Python玩转大疆Livox激光雷达点云(附完整配置流程)

从零玩转RflySim与大疆Livox激光雷达&#xff1a;Python点云处理全实战指南 当无人机开发者需要测试激光雷达算法时&#xff0c;真实飞行测试成本高昂且风险大。RflySim仿真平台结合大疆Livox激光雷达的虚拟模型&#xff0c;为开发者提供了一个安全、高效的测试环境。本文将手把…...

如何快速配置跨平台鼠标连点器:终极效率提升指南

如何快速配置跨平台鼠标连点器&#xff1a;终极效率提升指南 【免费下载链接】MouseClick &#x1f5b1;️ MouseClick &#x1f5b1;️ 是一款功能强大的鼠标连点器和管理工具&#xff0c;采用 QT Widget 开发 &#xff0c;具备跨平台兼容性 。软件界面美观 &#xff0c;操作直…...

零基础鸿蒙应用开发第二十二节:类的继承与多态入门

【学习目标】 理解继承的核心意义&#xff0c;掌握ArkTS中extends关键字的使用规则&#xff0c;区分“单继承”特性在鸿蒙开发中的适配场景&#xff1b;掌握super关键字的核心作用&#xff08;调用父类构造函数、调用父类方法&#xff09;&#xff0c;规避继承中的常见语法错误…...

3步实现音频自由:QMCFLAC2MP3高效解密与跨平台应用指南

3步实现音频自由&#xff1a;QMCFLAC2MP3高效解密与跨平台应用指南 【免费下载链接】qmcflac2mp3 直接将qmcflac文件转换成mp3文件&#xff0c;突破QQ音乐的格式限制 项目地址: https://gitcode.com/gh_mirrors/qm/qmcflac2mp3 一、音乐收藏者的困境&#xff1a;当专有格…...

忍者像素绘卷效果实测:32色感在移动端微信小程序的色彩还原精度

忍者像素绘卷效果实测&#xff1a;32色感在移动端微信小程序的色彩还原精度 1. 测试背景与目标 忍者像素绘卷是一款基于Z-Image-Turbo深度优化的图像生成工具&#xff0c;主打16-Bit复古游戏美学风格。本次测试聚焦于其在移动端微信小程序环境下的色彩还原能力&#xff0c;特…...

Windows 10 PL-2303串口驱动终极修复指南:告别老旧芯片兼容性问题

Windows 10 PL-2303串口驱动终极修复指南&#xff1a;告别老旧芯片兼容性问题 【免费下载链接】pl2303-win10 Windows 10 driver for end-of-life PL-2303 chipsets. 项目地址: https://gitcode.com/gh_mirrors/pl/pl2303-win10 还在为Windows 10系统下PL-2303串口适配器…...

microeco工具SpiecEasi网络分析功能的高效使用

microeco工具SpiecEasi网络分析功能的高效使用 【免费下载链接】microeco An R package for data analysis in microbial community ecology 项目地址: https://gitcode.com/gh_mirrors/mi/microeco microeco是一个用于微生物群落生态学数据分析的R语言工具包&#xff0…...

Ender3V2S1切片器脚本配置指南:优化3D打印效果的完整教程

Ender3V2S1切片器脚本配置指南&#xff1a;优化3D打印效果的完整教程 【免费下载链接】Ender3V2S1 This is optimized firmware for Ender3 V2/S1 3D printers. 项目地址: https://gitcode.com/gh_mirrors/en/Ender3V2S1 Ender3V2S1是一款备受欢迎的3D打印机&#xff0c…...

终极指南:五分钟让Win11老游戏重获联机能力的完整解决方案

终极指南&#xff1a;五分钟让Win11老游戏重获联机能力的完整解决方案 【免费下载链接】ipxwrapper 项目地址: https://gitcode.com/gh_mirrors/ip/ipxwrapper 还在为Win11系统下无法联机玩《星际争霸》《魔兽争霸2》《暗黑破坏神》等经典游戏而烦恼吗&#xff1f;今天…...

FireRedASR-AED-L从零开始教程:无需Python环境,镜像开箱即用识别中英混合语音

FireRedASR-AED-L从零开始教程&#xff1a;无需Python环境&#xff0c;镜像开箱即用识别中英混合语音 你是不是经常遇到这样的场景&#xff1f;手头有一段重要的会议录音&#xff0c;里面既有中文讨论&#xff0c;又夹杂着几个英文专业术语&#xff0c;想把它转成文字却找不到…...