10

在 Github Actions 上,当我将新构建的 Docker 镜像放在缓存中时,我想避免从注册表中提取它(这是我工作中最慢的部分)

我的工作流程类似于

  1. 构建图像(包含我所有的依赖项)
  2. 在上图中运行命令

根据Docker Build Push Action 文档,设置cache-toandcache-from指向gha有助于加快第 1 步。

但是,当我运行时docker run ghcr.io/org/image:new-tag command,它总是以

Unable to find image 'ghcr.io/org/image:new-tag' locally
new-tag: Pulling from org/image
...
5402d6c1eb0a: Pulling fs layer
...

这大约需要 50 秒(总工作时间约为 75 秒)。

当存在包含此信息的缓存时,这似乎是不必要的,但是我不知道如何告诉我的docker run命令如何使用此缓存,因为据我所知,docker run 没有--cache-from=gha等效的选项。

当我在 Github Actions 上调用 docker run 时,如何告诉 docker 在 gha 缓存中查找图像?

4

2 回答 2

2

前段时间我们遇到过类似的情况,但我们最近发现了一个 github-actions,它实际上有助于缓存 docker-layers 和图像 b/w 后续运行。

我相信你的问题也可以用它来解决。这是 gh-action https://github.com/satackey/action-docker-layer-caching的链接。

配置示例 您可以在 docker run 步骤上方添加以下行,以确保在 gha 中完成缓存

    - uses: satackey/action-docker-layer-caching@v0.0.11
      continue-on-error: true
于 2021-10-26T20:43:47.323 回答
0

但是,一旦您开始在虚拟机上构建映像,每次运行后都会被销毁,您就失去了缓存的所有优势。

请参考本教程将对您有所帮助。https://eilmartians.com/chronicles/build-images-on-github-actions-with-docker-layer-caching

于 2021-11-02T07:17:31.870 回答