cod*_*ent 5 curl openshift docker openshift-origin dockerfile
我在Dockerfile中有这个curl命令:
RUN curl -H 'Cache-Control: no-cache' -f ${NEXUS_URL}${ARTIFACT_PATH}-${ARTIFACT_VERSION}.war?nocache=true -o $JBOSS_HOME/standalone/deployments/ROOT.war
Run Code Online (Sandbox Code Playgroud)
我第一次运行它时可以看到下载信息.然而,之后它似乎缓存远程资源,因此,不再更新它:
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
Run Code Online (Sandbox Code Playgroud)
我怎么能阻止这个?
根据OpenShift文档(https://docs.openshift.com/enterprise/3.1/dev_guide/builds.html#no-cache),您可以使用以下语法强制不缓存构建:
strategy:
type: "Docker"
dockerStrategy:
noCache: true
Run Code Online (Sandbox Code Playgroud)
这意味着不会缓存任何步骤,这会使您的构建更慢,但意味着您在构建中拥有正确的工件版本.
您可以使用ARG在特定的Dockerfile指令中破坏缓存.
在Dockerfile中:
Run Code Online (Sandbox Code Playgroud)ARG CACHEBUST=1 RUN git clone https://github.com/octocat/Hello-World.git在命令行上:
Run Code Online (Sandbox Code Playgroud)docker build -t your-image --build-arg CACHEBUST=$(date +%s) .将CACHEBUST设置为当前时间意味着它将始终是唯一的,并且不会缓存Dockerfile中ARG声明之后的指令.请注意,您也可以在不指定CACHEBUST build-arg的情况下进行构建,这将使其使用默认值1并保留缓存.这可以用来总是检查git repos的新副本,拉出最新的SNAPSHOT依赖项等.
也:
您可以使用--no-cache或--build-arg使缓存无效.您可以通过使用包含所有可缓存命令的基本映像来最小化--no-cache的影响.
| 归档时间: |
|
| 查看次数: |
1139 次 |
| 最近记录: |