我有一个长期运行的坞构建过程,所以我不希望禁用整个构建的缓存(使用--no-cache)。但是,我想使特定步骤的缓存无效。
我有一个好主意:移除缓存的层并重建,所以这必须重建。
我用:
docker build --progress=plain要获取缓存层的沙:
#16 [stage-9 3/15] RUN pip install -r /tmp/requirements.lock
#16 sha256:e4ac79a1eac5702cd296ccf33a1cfa2e0c3890c77d42737dc62a3b26ac3e798e
#16 CACHED但是我得到了这个错误
> docker rmi e4ac79a1eac5702cd296ccf33a1cfa2e0c3890c77d42737dc62a3b26ac3e798
Error: No such image: e4ac79a1eac5702cd296ccf33a1cfa2e0c3890c77d42737dc62a3b26ac3e798是否有一种(容易)删除此层的方法?
注意:对于大多数用例(甚至是本用例),您可能希望为docker build使用-无缓存选项
发布于 2022-08-26 13:23:59
没有直接的可能。但是可以通过对您的停靠文件进行一些更改来完成。
要强行破坏缓存,可以使用“构建时参数”(ARG);更改该参数的值将中断缓存,例如:
FROM something
RUN apt-get update && apt-get install foo bar baz ......
ARG CACHE_DATE=2016-01-01
# steps below will always be executed if `CACHE_DATE` is changed to a unique value
RUN blablabla并在构建期间为CACHE_DATE设置一个新的日期:
docker build --build-arg CACHE_DATE="$(date)" ....详细信息直接从这个github问题获取。
发布于 2022-04-05 02:16:53
也许您可以通过以下命令删除:
docker rm e4ac79a1eac5702cd296ccf33a1cfa2e0c3890c77d42737dc62a3b26ac3e798因为您仍然在使用相同的图像,并且只使用不同的容器。
发布于 2022-08-26 16:15:25
如果您愿意的话,有一种很麻烦的方法可以这样做,而且它可能不适用于您的用例.但是,在我多年来为cycle.io团队所做的大量QA期间,我发现如果我需要控制缓存层,我可以将其移到Dockerfile的末尾,并在其前面为任意文件(例如.txt文件)设置一个“拷贝”步骤。如果对txt文件进行更改,它将使以下所有步骤的缓存无效。
https://stackoverflow.com/questions/69842045
复制相似问题