跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • Jenkins 中 Docker 分层构建缓存无效问题如何解决?
未分類
11 9 月 2020

Jenkins 中 Docker 分层构建缓存无效问题如何解决?

Jenkins 中 Docker 分层构建缓存无效问题如何解决?

資深大佬 : lawsiki 3

背景:

  • 本机 macOS,docker 版本:Docker version 19.03.8, build afacb8b
  • jenkins 构建服务器 CentOS,docker 版本:Docker version 19.03.12, build 48a66213fe

Jenkins 构建的流程是

  • 构建流程使用 Jenkins 的 pipline
  • 使用 jenkins 自带的 git 命令拉取指定分支
  • maven 打包 jar
  • 构建 docker 镜像
  • 推送 docker 镜像运行

刚开始使用的是 springboot 的 fatjar,问题就是每次构建推送的时候都要重新打包 100 多 M,很费时

现在想使用 docker 分层镜像缓存的原理,将 maven 构建拆分为 lib 和 app.jar ,这样每次构建只需要几百 k 就够了,本地测试都正常,没有更改依赖的时候,第二次构建都是瞬间完成

但是放到 Jenkins 上跑的时候,发现 14,15 行两个命令并没有走缓存,请问有人碰到过吗?

Dockerfile Jenkins 中 Docker 分层构建缓存无效问题如何解决?

Jenkins 的 git 更新日志 Jenkins 中 Docker 分层构建缓存无效问题如何解决?

Jenkins 构建日志 Jenkins 中 Docker 分层构建缓存无效问题如何解决?

本地构建日志 Jenkins 中 Docker 分层构建缓存无效问题如何解决?

大佬有話說 (4)

  • 資深大佬 : Aliencn

    感觉像是有些操作修改了原文件的时间戳,让 docker 认为这是新文件就放弃使用缓存了。

  • 主 資深大佬 : lawsiki

    @Aliencn #1 查过好像是 git checkout 的时候修改文件时间了,但是我尝试 使用 find ./ | grep -v .git | xargs touch -t 200001010000.00 修改文件时间后还是一样的问题

  • 資深大佬 : calmzhu

    看下 jenkinsFile 文件

    然后在 dockerbuild 之前将 target/lib 考到第三方目录。用 hash 比对一下两次之间的文件看看

    然后用 Jenkins 时 建议不要管本地过不过。Jenkins 跟本地环境可以差非常多。除非对某个步骤依赖的环境极为清楚。看本地反而限制自己排查问题

  • 主 資深大佬 : lawsiki

    @calmzhu #3 恩,之前陷入误区了,一直以为是 git 的问题,排除法尝试后发现是在模块依赖了另一个 common 模块,而 common 模块每次都会 install,所以 lib 就无法缓存了

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具