我正在使用新的实验性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-sources和https://github.com/moby/buildkit#export-cache,但是我不清楚哪个是特定于buildkit的,哪个是docker的,或者哪个真的适用于安装在Dockerfile RUN命令中的此缓存。
我在此处添加了一个失败的测试的公开要点,该测试表明了我的期望: https://gist.github.com/Mahoney/85e8549892e0ae5bb86ce85339db1a71/6308f1bdb062a8982017193b96d61ec00a7698c5
此更高版本可以使用,但我对此不满意-过多的引导程序: https://gist.github.com/Mahoney/85e8549892e0ae5bb86ce85339db1a71
答案 0 :(得分:3)
似乎没有任何方法可以从常规docker工作文件中提取此特定缓存。
但是,您当然可以备份整个/var/lib/docker
。这对CircleCI的远程docker引擎不起作用,因为您没有sudo访问权限,但对您所在的GitHub Actions起作用。
请参见此处的示例: https://github.com/Mahoney-playground/docker-cache-action