如果在 Dockerfile 顶部声明的 ARG 被更改,但其值仅用于 Dockerfile 末尾附近的 RUN 命令,Docker 是从头开始重建整个镜像还是能够重新使用中间的相关 RUN 命令之前的图像?
为了更好地利用分层,我应该将我的 ARG 声明放在 Dockerfile 的顶部,还是就在使用它们的部分之前?
我想我的问题的一部分是 ARG 指令是否生成中间层。
最佳答案
比接受的响应更准确,并非所有行都在 ARG
声明后缓存无效。只有那些使用 ARG
值和 RUN
s 的值。 docker 文档的详细信息:
您必须将
ARG
s 移到不需要参数的 RUN
s 下,以保持层缓存优化。欲了解更多信息:
关于docker - 将 ARG 放在 Dockerfile 顶部是否会阻止层重用?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41593135/