Docker 如何仅在发生更改时运行 piprequirements.txt?

2023-11-29

在 Dockerfile 中我有一个安装层requirements.txt:

FROM python:2.7
RUN pip install -r requirements.txt

当我构建 docker 映像时,它会运行整个过程不管对此文件所做的任何更改。

如何确保 Docker 只运行pip install -r requirements.txt文件是否有更改?

Removing intermediate container f98c845d0f05
Step 3 : RUN pip install -r requirements.txt
 ---> Running in 8ceb63abaef6
Collecting https://github.com/tomchristie/django-rest-framework/archive/master.zip (from -r requirements.txt (line 30))
  Downloading https://github.com/tomchristie/django-rest-framework/archive/master.zip
Collecting Django==1.8.7 (from -r requirements.txt (line 1))

我假设在构建过程中的某个时刻,您将整个应用程序复制到 Docker 映像中COPY or ADD:

COPY . /opt/app
WORKDIR /opt/app
RUN pip install -r requirements.txt

问题在于,每次将整个应用程序复制到映像中时,都会使 Docker 构建缓存失效。这也将使所有后续构建步骤的缓存失效。

为了防止这种情况,我建议复制只有requirements.txt在将整个应用程序添加到映像之前,在单独的构建步骤中创建文件:

COPY requirements.txt /opt/app/requirements.txt
WORKDIR /opt/app
RUN pip install -r requirements.txt
COPY . /opt/app
# continue as before...

由于需求文件本身可能很少更改,因此您将能够使用缓存的层,直到将应用程序代码添加到映像中为止。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Docker 如何仅在发生更改时运行 piprequirements.txt? 的相关文章

随机推荐

  • 如何在输入中添加按钮

    使用 HTML 和 CSS 如何直观地将按钮放置在输入元素内 如下所示 用户应该能够正常与输入交互 文本不应位于按钮后面 即使文本很长 焦点应该可以正常工作 该表单应该可以在屏幕阅读器中访问并正常工作 整个组件应该可以使用 CSS 设置样式
  • 在 AngularJs 中定义控制器的最佳方法

    我是 AngularJs 的新手 我很困惑哪一种是为其创建控制器的最佳方法ng app mainApp 在编程时 我曾使用过的其他编程语言建议将相关数据保存在一起 但在 AngularJs 中 当我们可以在主应用程序模块上定义控制器时 为控
  • 如何提高 Tesseract 中 OCR 文本的准确性?

    我使用 Google 的 Tesseract API 创建了一个用于识别文本的基本应用程序 并将其与我的相机应用程序集成 它工作正常 但唯一的问题是准确性 因为有时文本被识别为随机字符集 我猜准确度约为 50 此外 当它尝试扫描图像中超过四
  • Angular 2:无法读取未定义的属性“push”

    在我的 Angular 2 应用程序中 我有一个函数 notification Array
  • 如何使组合框项目列表动态化?

    我在工作表上使用 生成 按钮 当我单击该按钮时 会出现一个弹出窗口 表单 其中包含两个组合框 根据第一个组合框中的选择 填充第二个组合框选项列表 对于第一个组合框 当我对项目值进行硬编码时 它工作正常 表单代码如下 Private Sub
  • 在sql和pyodbc中参数化TOP值

    我尝试参数化从表中获取的顶行数 我尝试过 db cursor execute SELECT TOP VALUE FROM mytable WHERE param top value param 它表明 pyodbc ProgrammingE
  • 跨 REST 微服务的事务?

    假设我们有一个用户 钱包 REST 微服务和一个将事物粘合在一起的 API 网关 当 Bob 在我们的网站上注册时 我们的 API 网关需要通过 User 微服务创建用户 并通过 Wallet 微服务创建钱包 现在这里有一些可能出现问题的场
  • 使用 keras 在 gcloud ml-engine 上处理 TB 数据的最佳方法

    我想使用 gcloud 存储上约 2TB 的图像数据训练模型 我将图像数据保存为单独的 tfrecords 并尝试按照此示例使用张量流数据 api https medium com moritzkrger speeding up keras
  • 响应 SQL 'in' 语句的 R 语句是什么?

    a case df data frame id c 101 102 102 103 104 104 104 calmonth c 01 01 01 01 01 01 02 product c apple apple htc htc appl
  • 如何生成开发MDM/APNS证书?

    我们已经取得了iOS开发者企业帐户 并且我们已经收到了 pem格式的MDM证书 我们已经从门户网站下载了这个mdm证书https identity apple com pushcert 但我们不知道这是生产 MDM 证书还是开发 MDM 证
  • 使用视图寻呼机 android 覆盖 Flow 功能

    我必须在我的应用程序中实现类似于mobikwik 应用程序封面流程 and 我已经尝试过Android CoverFlow 小部件库以及其他一些人 但没有任何效果按预期进行 我如何使用 ViewPager 实现这种类型的视图 我已经创建了我
  • 给定四个坐标检查它是否形成正方形

    所以我试图编写一个简单的方法 它接受四个坐标集并确定它们是否形成正方形 我的方法是从一个点开始 计算其他三个点与基点之间的距离 由此我们可以得到具有相同值的两条边和一条对角线 然后我使用毕达哥拉斯定理来查找边的平方是否等于对角线 如果是 i
  • 如何在表单之外捕获按键操作?

    我一直在尝试捕获在 winform 之外按下的按键 但显然 KeyPress 事件不起作用 我无法比 KeyPress 事件更接近 该事件仅适用于指定的表单级别 我怀疑我必须这样做 DllImportAttribute user32 dll
  • R中的最长公共子串查找两个字符串之间的不连续匹配

    我有一个关于在 R 中查找最长公共子字符串的问题 在 StackOverflow 上搜索一些帖子时 我了解了 qualV 包 但是 我看到这个包中的 LCS 函数实际上找到了 string1 中出现在 string2 中的所有字符 即使它们
  • 显示 Lucene 搜索结果中的示例文本

    目前 我正在使用 Lucene 版本 3 0 2 创建一个类似于字典的搜索应用程序 我想要显示的对象之一是一种 示例 Lucene 将在书中查找单词 然后显示使用该单词的句子 我一直在阅读 Lucene in Action 一书 它提到了类
  • 如何访问 Sinatra 中的*传入*标头?

    我通过以下方式向 Sinatra 应用程序发送请求 curl X POST header MyHeader 123444 http localhost 9292 test d 我如何在路线中访问它 这些不起作用 headers MyHead
  • 分区表,每个分区位于我的硬盘上的不同磁盘上

    我有一个表想要在 MYSQL 5 5 中分区 我知道该怎么做 但我还需要为每个分区指定一个磁盘 例如 我想输入 P01 在 c P02 在 d 等等 我目前正在使用这个语句 这不能满足我的要求 但效果很好 ALTER TABLE trans
  • 如何通过 MS Access 在 SQL Server 中创建临时表

    我有一个到 SQL Server 的 ODBC 连接 我需要在 Access 中处理数据 但时间太长 我的想法是将这些数据推送到 SQL Server 临时表并让 SQL Server 进行处理 我的 Access 数据库中有许多传递查询
  • 使用更新触发器更新另一个表

    我正在开发的程序的后端设计很差 基本上需要两个不同的表来保存完全相同的信息 我正在尝试编写一个触发器 它将使用刚刚在表 A 中更新的相同信息来更新表 B 哦 这是使用 MYSQL 数据库 我不确定我是否只是有语法错误或者我是否缺少概念 任何
  • Docker 如何仅在发生更改时运行 piprequirements.txt?

    在 Dockerfile 中我有一个安装层requirements txt FROM python 2 7 RUN pip install r requirements txt 当我构建 docker 映像时 它会运行整个过程不管对此文件所