Rob*_*iot 15 docker dockerfile docker-buildkit
我正在使用新的实验性 docker buildkit 语法来进行多阶段构建,如下所示:
Dockerfile:
RUN --mount=type=cache,target=/home/build/.build-cache,gid=1000,uid=1001 ./build
Run Code Online (Sandbox Code Playgroud)
重击:
RUN --mount=type=cache,target=/home/build/.build-cache,gid=1000,uid=1001 ./build
Run Code Online (Sandbox Code Playgroud)
在本地效果很好。在 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
似乎没有任何方法可以从一般的 docker 工作文件中提取这个特定的缓存。
但是,您当然可以备份整个/var/lib/docker. 这不适用于 CircleCI 的远程 docker 引擎,因为您没有 sudo 访问权限,但适用于您所在的 GitHub Actions。
请参阅此处的示例: https://github.com/Mahoney-playground/docker-cache-action
| 归档时间: |
|
| 查看次数: |
6332 次 |
| 最近记录: |