如何在Heroku上配置启用Docker BuildKit?其运行的Docker版本是多少
Heroku 平台 Docker BuildKit 相关问题解答
首先给出明确结论:Heroku 原生 Docker 构建流程目前不支持 BuildKit 能力,你碰到的Dockerfile parse error line xx: Unknown flag: mount报错是平台构建环境的版本限制导致,和你本地配置、Dockerfile 写法无关。
- 关于 Heroku 运行的 Docker 版本:当前 Heroku 官方构建栈使用的 Docker 引擎版本低于 18.09,且构建流程没有对外开放 BuildKit 的启用开关,你尝试的两种方案不生效是必然结果:不管是在 Dockerfile 头部加
# syntax=...声明,还是配置DOCKER_BUILDKIT=1环境变量,生效前提都是平台侧构建运行时本身支持 BuildKit,在底层引擎不支持的情况下,这些配置不会产生任何作用。 - 可落地的解决办法:
- 绕开 Heroku 侧的构建环节:在本地安装 18.09 及以上版本的 Docker,本地开启 BuildKit 完成全流程镜像构建(包括拉取私有 GitHub 仓库依赖的步骤),构建完成后直接把本地构建好的镜像推送到 Heroku 容器仓库发布即可,不需要让 Heroku 平台执行 Dockerfile 解析和构建操作。
- 替换私有依赖拉取方案:如果必须在 Heroku 侧完成构建,可以放弃 BuildKit 的 SSH 挂载能力,通过构建参数传入短期有效的 GitHub 个人访问令牌,使用 HTTPS 协议拉取私有仓库依赖,构建过程中注意不要把令牌写入持久化的镜像层,构建结束后令牌立刻作废即可。
注意:不要尝试在 Heroku 构建脚本里自行升级 Docker 版本,Heroku 的构建运行时是权限受限环境,没有修改系统级 Docker 服务的权限,这类操作都会直接执行失败。
内容的提问来源于stack exchange,提问作者Dušan Maďar
相关产品推荐
相关产品推荐

