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

如何在Docker Compose中启用BuildKit远程缓存解决多阶段构建缓存问题

Docker Compose 启用BuildKit Registry远程缓存方案

完全可以在Docker Compose构建流程中直接启用BuildKit的远程缓存能力,解决多阶段构建中间层缓存失效的问题,不需要替换现有构建工具链,操作步骤如下:

  • 前置环境配置
    若使用Docker Compose V1版本,执行构建前先设置两个环境变量启用BuildKit构建后端:
    export DOCKER_BUILDKIT=1
    export COMPOSE_DOCKER_CLI_BUILD=1
    
    Docker Compose V2及以上版本默认使用BuildKit作为构建引擎,无需额外设置环境变量。
  • Compose文件配置修改
    针对每个需要构建镜像的服务,在build配置段下增加cache_from和cache_to参数,指向你私有镜像仓库的缓存镜像地址即可,示例配置如下:
    services:
      api-service:
        build:
          context: ./api
          dockerfile: Dockerfile
          # 构建时拉取缓存的源地址
          cache_from:
            - your-private-registry.com/api-service:cache
          # 构建完成后导出缓存的目标地址
          cache_to:
            - your-private-registry.com/api-service:cache
      web-service:
        build:
          context: ./web
          dockerfile: Dockerfile
          cache_from:
            - your-private-registry.com/web-service:cache
          cache_to:
            - your-private-registry.com/web-service:cache
    
    你可以直接复用现有业务镜像的仓库路径,使用独立的cache标签区分缓存镜像和正式发布的业务镜像即可,不需要额外部署缓存服务。
  • CI流程适配调整
    原有“提前拉取存量业务镜像作为缓存”的逻辑可以直接移除,BuildKit会自动在构建阶段从配置的cache_from地址拉取匹配的构建层,包括多阶段构建中所有中间阶段的层,不会再出现之前中间构建阶段无法命中缓存的问题。构建完成后,除了正常推送最终版本的业务镜像到仓库,不需要执行额外操作,BuildKit会自动把本次构建的可复用层导出到cache_to指定的地址,供下一次构建使用。

注意事项:

  1. 执行构建的CI节点需要提前通过docker login完成私有镜像仓库的鉴权,BuildKit会自动复用本地Docker的鉴权信息拉取、推送缓存,不需要额外配置认证参数。
  2. 缓存镜像的标签可以根据自己的分支策略调整,比如按分支名设置不同的缓存标签,避免不同分支的构建缓存互相覆盖。
  3. 搭配alpine基础镜像的多阶段构建场景下,只要Dockerfile指令没有变动,中间构建阶段的层缓存命中率可以达到90%以上,和单阶段构建的缓存效果一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.01 13:27:24