我在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命令的上方,但對於常見的場景來說,它感覺很難受。 –