如何从RUN --mount = type = cache` Docker构建中重用缓存?

时间:2020-02-28 08:48:19

标签: docker dockerfile docker-buildkit

我正在使用新的实验性docker buildkit语法进行多阶段构建,如下所示:

Dockerfile:

RUN --mount=type=cache,target=/home/build/.build-cache,gid=1000,uid=1001 ./build

重击:

DOCKER_BUILDKIT=1 docker build .

在本地效果很好。在CI上,我每次都会获得一个新的docker环境,因此无需缓存。

我可以将文件导出和导入到环境中,但是我不知道缓存位于何处。有什么想法吗?

还是应该通过某些docker命令导出/导入缓存?我已经读过https://docs.docker.com/engine/reference/commandline/build/#specifying-external-cache-sourceshttps://github.com/moby/buildkit#export-cache,但是我不清楚哪个是特定于buildkit的,哪个是docker的,或者哪个真的适用于安装在Dockerfile RUN命令中的此缓存。

我在此处添加了一个失败的测试的公开要点,该测试表明了我的期望: https://gist.github.com/Mahoney/85e8549892e0ae5bb86ce85339db1a71/6308f1bdb062a8982017193b96d61ec00a7698c5

此更高版本可以使用,但我对此不满意-过多的引导程序: https://gist.github.com/Mahoney/85e8549892e0ae5bb86ce85339db1a71

1 个答案:

答案 0 :(得分:3)

似乎没有任何方法可以从常规docker工作文件中提取此特定缓存。

但是,您当然可以备份整个/var/lib/docker。这对CircleCI的远程docker引擎不起作用,因为您没有sudo访问权限,但对您所在的GitHub Actions起作用。

请参见此处的示例: https://github.com/Mahoney-playground/docker-cache-action