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

lawsiki

背景:

  • 本机 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 分层构建缓存无效问题如何解决?

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

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

看来风向要变了,终于有公司敢不吹 docker 和微服务了《王者荣耀为什么不使用微服务架构?》

594duck:https://mp.weixin.qq.com/s/AivWpbLHl8-Qh_NWq5Cbrw我我实名反对无脑微服务快 4 年了。4 年里无数人教我做人的道理。但是没有一个说得出所谓维服务之解决了 ci/cd 的问题外什么问题。终于风向要变了。我曾经在某位阿里恰饭微服务大佬的群里和他们吵了三天最后被几个连班都没上过的门徒硬是辱骂出群。将来…

[请教] Docker 容器如何与主机同网段其它主机互通?

xuerui911:我最近在学习大数据,Hadoop Zookeeper Hive Flume Kafka HBase 等等,需要同时开 5 个 VMWare 虚拟机,5 个虚拟机和主机 Windows 的 IDEA 互相访问。笔记本风扇起飞,风扇爆炸吵。我查到 Docker 是更轻量化的虚拟化技术,就简单学习了 Docker 。我理解 Docker0 所谓…

Docker Compose在多阶段构建中覆盖了COPY - php

我的目标是在docker文件的一个阶段中获取php依赖项,然后将这些依赖项复制到下一阶段(vendor/ dir)。但是,一旦在docker-compose.yml中指定了覆盖COPY语句的卷,就好像从未发生过一样。docker-compose.ymlversion: "3" services: app: build: context: …

Jenkins / checkstyle认为错误的代码样式已失败 - java

我正在使用Jenkins测试Java软件项目(使用Play Web框架,但这并不重要)。测试的一部分是关于代码样式的,为此我使用checkstyle。我尝试通过以下方式设置工作:我通过命令行执行checkstyle,这会在xml中生成一个报告checkstyle -c /usr/share/checkstyle/sun_checks.xml -f xml -…

Docker PHP-APACHE容器全局设置ServerName指令 - php

当我尝试在docker上运行php:apache容器时收到此警告,请任何想法如何解决此问题。 AH00558:apache2:无法可靠地确定服务器的完全状态 限定域名,使用172.17.0.2。设置“服务器名称” 全局伪指令以禁止显示此消息AH00558:apache2:可以 使用以下方法不能可靠地确定服务器的标准域名: 172.17.0.2。全局设置'Se…