Disable cache for specific RUN commands

2019-01-25 01:34发布

I have a few RUN commands in my Dockerfile that I would like to run with -no-cache each time I build a Docker image.

I understand the docker build --no-cache will disable caching for the entire Dockerfile.

Is it possible to disable cache for a specific RUN command?

标签: docker
3条回答
Ridiculous、
2楼-- · 2019-01-25 02:07

As of February 2016 it is not possible.

The feature has been requested at GitHub

查看更多
3楼-- · 2019-01-25 02:08

Not directly but you can divide your Dockerfile in several parts, build an image, then FROM thisimage at the beginning of the next Dockerfile, and build the image with or without caching

查看更多
爷的心禁止访问
4楼-- · 2019-01-25 02:10

There's always an option to insert some meaningless and cheap to run command before the region you want to disable cache for.

As proposed in this issue comment, one can add a build argument block (name can be arbitrary):

ARG CACHEBUST=1 

before such region, and modify its value each run by adding --build-arg CACHEBUST=$(date +%s) as a docker build argument (value can also be arbitrary, here it is current datetime, to ensure it's uniqueness across runs).

This will, of course, disable cache for all following blocks too, as hash sum of the intermediate image will be different, which makes truly selective cache disabling a non-trivial problem, taking into account how docker currently works.

查看更多
登录 后发表回答