我将RUN ls /some/directory
用于Dockerfile
的“打印调试”。该命令运行一次且之前未更改任何命令后,结果将被缓存并且不提供任何输出。
我可以用从未执行过的部分来更改命令,例如追加|| echo some changing number]
,这对于每次运行都会造成麻烦,或者关闭构建缓存,这会影响RUN
的数量超过必要,从而减慢Dockerfile
的开发速度。
有没有一种方法可以仅对一个RUN
禁用缓存,而没有任何上述缺点?
答案 0 :(得分:1)
使用build arg是可以接受的解决方案吗?
# Dockerfile
FROM alpine
RUN echo "executed 1"
# Above this will be cached, below will be retriggered with new builds
ARG BUILD
RUN echo "executed 2"
然后,以不同的arg参数运行,以重新运行ARG以下的所有内容
$ docker build --build-arg BUILD=2 -t temp .
或者,使用date
作为内部版本号:
$ docker build --build-arg BUILD="$(date)" -t temp .