我在Dockerfile有这样的curl命令:OpenShift 3.1 - 防止码头工人从缓存卷曲资源
RUN curl -H 'Cache-Control: no-cache' -f ${NEXUS_URL}${ARTIFACT_PATH}-${ARTIFACT_VERSION}.war?nocache=true -o $JBOSS_HOME/standalone/deployments/ROOT.war
我第一次跑了,我没看到的下载信息。然而之后,似乎是缓存远程资源,因此,不再更新它:
Step 6 : RUN curl -H 'Cache-Control: no-cache' -f ${NEXUS_URL}${ARTIFACT_PATH}-${ARTIFACT_VERSION}.war?nocache=true -o $JBOSS_HOME/standalone/deployments/ROOT.war
30 ---> Using cache
31 ---> be50412bf6c3
我怎么能防止这种情况?
我无法控制docker运行的方式,我的意思是我运行在调用dockerfile的PaaS中,因此我无法在docker构建中传递参数... – codependent
我给你+1作为最好的纯Docker答案 – codependent
因此,从shell运行时,使用CACHEBUST vs --no-cache有什么区别?我的dockerfile(间接)克隆了一个单独的git仓库,我正在积极改变。 (为了完全准确,它不是直接克隆第二个repo,但是pip正在安装它。)我希望有条件地删除缓存,理想情况下只适用于添加单独repo的图层,只要其远程分支的HEAD发生更改。我曾经想过动态地从GitHub中获取HEAD提交哈希,并将其存储在一个文件中,该文件添加到了回购的ADD命令的上方,但对于常见的场景来说,它感觉很难受。 –