You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Azure Docker缓存任务Cache@2加速构建流水线并优化Azure上Docker构建速度?

当然可以用Cache@2任务来大幅提升Azure上的Docker构建速度!本地构建快是因为你的机器保留了之前的Docker构建缓存,而Azure DevOps的代理每次都是全新的干净环境,所以每次都得从头拉取依赖、构建所有镜像层,自然慢很多。下面我给你修改好的build.yml配置,直接就能用,还会给你解释每个部分的作用:

修改后的完整build.yml配置

trigger:
  branches:
    include:
      - main
pool:
  vmImage: 'ubuntu-latest'
steps:
  - checkout: self
    clean: true
    submodules: false

  # 缓存Docker构建层,让后续构建能复用之前的镜像层
  - task: Cache@2
    inputs:
      key: 'docker | "$(Agent.OS)" | ./MyService/Dockerfile'
      restoreKeys: |
        docker | "$(Agent.OS)"
      path: /var/lib/docker
    displayName: 'Cache Docker layers'

  - task: Docker@2
    inputs:
      containerRegistry: 'MyDockerHub'
      repository: 'myRepo/myservice'
      command: 'buildAndPush'
      Dockerfile: './MyService/Dockerfile'
      buildContext: './'
      tags: |
        $(Build.BuildId)
        latest
      # 告诉Docker使用我们缓存的本地镜像层
      arguments: '--cache-from=type=local,src=/var/lib/docker'

关键部分解释

  • Cache@2任务:
    • key:这个是缓存的唯一标识,由三个部分组成:docker标记缓存类型、$(Agent.OS)确保不同操作系统的缓存不混淆、./MyService/Dockerfile保证当你的Dockerfile修改时,会自动失效旧缓存,重新构建所有层。
    • restoreKeys:如果找不到完全匹配的key,会回退到同一操作系统的Docker缓存,尽量复用之前的构建内容。
    • path:指定要缓存的Docker核心目录/var/lib/docker,这里存储了所有镜像层和构建缓存,正是本地构建快的关键所在。
  • Docker@2任务的arguments:添加--cache-from=type=local,src=/var/lib/docker,明确告诉Docker使用我们恢复的缓存目录来复用镜像层,避免重复构建。

额外优化(针对有包管理的项目)

如果你的项目用了npm、pip这类包管理工具,还可以额外缓存项目依赖文件夹,让Docker的依赖安装步骤更快复用。比如Node.js项目可以加这一步在Docker任务之前:

- task: Cache@2
  inputs:
    key: 'npm | "$(Agent.OS)" | ./MyService/package-lock.json'
    restoreKeys: |
      npm | "$(Agent.OS)"
    path: ./MyService/node_modules
  displayName: 'Cache Node.js dependencies'

记得你的Dockerfile要先COPYpackage.json/package-lock.json,再执行npm install,最后COPY其他代码——这样只要依赖文件不变,Docker就会直接复用这一层的缓存。

效果说明

第一次配置后构建还是会慢(因为要生成缓存并上传到Azure存储),但从第二次构建开始,就能直接恢复缓存,构建速度会和本地差不多,节省大量时间。

内容的提问来源于stack exchange,提问作者Milos

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.29 20:39:07