docker - 是否可以缓存多阶段 docker 构建?

标签 docker containers dockerfile google-cloud-build

我最近切换到多阶段 docker 构建,中间构建似乎没有任何缓存。我不确定这是否是 docker 限制、不可用或者我做错了什么。

我正在拉下最终构建并在新构建开始时执行 --cache-from,但它始终运行完整构建。

最佳答案

这似乎是 docker 本身的限制,并在此问题下进行了描述 - https://github.com/moby/moby/issues/34715

解决方法是:

  1. 使用 --target 构建中间阶段
  2. 将中间图像推送到注册表
  3. 使用 --target 构建最终图像并使用多个 --cache-from 路径,列出所有中间图像和最终图像
  4. 将最终图像推送到注册表
  5. 对于后续构建,首先从注册表中拉取中间 + 最终图像

关于docker - 是否可以缓存多阶段 docker 构建?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52646303/

相关文章:

docker - Ubuntu docker rm $(docker ps -a -q)获得权限被拒绝

mysql - 在 docker-compose.yaml 中配置应用程序和 MySQL DB - 无法打开 JDBC 连接

scala - OCI错误 “/opt/docker/bin/my_job”:使用sbt docker:publishLocal没有此类文件或目录

java - 如何管理容器化应用程序设置?

c++ - C++中不相关T的容器

docker - 如何解析 docker 文件中的 CMD 和 ENTRYPOINT exec 形式?

docker - 即使我删除了.git repo,Docker缓存的构建还是很大的

Docker如何获取容器使用的卷

c++ - 访问自定义 2-dim C++ 容器元素的最佳方法

docker - Docker:错误:作业失败:命令以退出代码1终止