如果没有任何变化,如何避免安装新车轮

问题描述 投票:0回答:1

我正在为一个纯Python项目构建轮子。该项目需要在Docker容器中运行,该容器在将轮子复制到其中后会经历一些繁重的构建过程。我想利用Docker构建缓存,但是为此,我需要确保构建的wheel文件的校验和不会不必要地更改。

轮子基于zip,这意味着当所包含文件中的某些元数据发生更改时,zipfile本身(以及轮子)也会更改。但我不希望这些更改影响转盘中文件的校验和。我只希望更改项目的实际源代码以进行重建。

我已经想出了一些相当复杂的解决方案,例如手动保存myproject.egg-info / SOURCES.txt中列出的文件的各个校验和的记录,但是有一种更简单的方法来防止滚轮如果所有来源都没有发生重大变化,该如何更改? (例如,有没有一种方法可以查询setuptools或egg-info来确定重建是否会改变任何内容?)

python docker zip checksum
1个回答
0
投票

如果Docker构建也构建了轮子,那么输入文件将是其哈希很重要的文件。

FROM python
COPY . .  # this is where cache invalidation will happen
RUN python setup.py bdist_wheel
# ... now do the rest of the build steps

[如果您希望最终的Docker映像不包括构建转轮(https://pythonspeed.com/articles/smaller-python-docker-images/)所需的所有基础设施和文件,也可以将其作为多阶段构建进行。

© www.soinside.com 2019 - 2024. All rights reserved.