如何在VSTS构建中构建映像时禁用docker缓存?

时间:2018-01-18 11:53:03

标签: docker azure-devops azure-pipelines

我正在运行包含docker构建任务的VSTS构建。我在build args字段中传递--no-cache参数。不幸的是,在构建期间,我收到一条消息,指出这个arg被忽略了。有没有人有同样的问题?

3 个答案:

答案 0 :(得分:1)

原因是,docker构建任务在--no-cache之后添加--build-arg参数,不能被消费。

解决方法是您可以添加其他参数,例如test=test --no-cache(不会消耗[test]警告。

另一方面,您也可以通过命令行任务调用docker build命令。

答案 1 :(得分:0)

添加--no-cache对我不起作用

我在不希望被缓存的COPY语句之前在Dockerfile中添加了一个标记

FROM microsoft/azure-functions-dotnet-core2.0:2.0-nanoserver-1803

ARG CACHEBUSTER=0
COPY ./FunctionApp/bin/Release/netstandard2.0/Publish /approot

,然后将RegEx Replace任务放置在docker build任务之前,并用唯一的内容替换 ARG CACHEBUSTER = 0 ARG CACHEBUSTER = $(Build.BuildNumber)

答案 2 :(得分:0)

在Azure生成管道中使用“ azure-pipelines.yml”可解决此问题:

script: docker build -t $(dockerId)/$(imageName) .  # add options to this command to meet your needs

Build, test, and push Docker container apps in Azure Pipelines - Build an image

示例:

pool:
 name: MarkusMeyer
 demands:
 - node.js
 - Agent.OSVersion -equals 10.0.17134

variables:
  imageName: 'your-container-image-name:$(build.buildId)'

steps:
 - script: docker build --no-cache -f Dockerfile -t $(imageName) .
displayName: 'docker build'