记一次Quarkus部署失败

记一次Quarkus部署失败

部门里有一个工程师认定考试,主要目的就是考验一些RestApi的写法及熟练度,主流框架SpringBoot的一些简单的功能了解程度,TDD开发手法的运用,UT、IT等测试的写法。关于DI理解程度的report,这种。

之前考了三次都挂掉了,原因具体如下:

  1. 第一次:UT的覆盖度不够,DI理解不足
  2. 第二次:DI理解不足
  3. 第三次:java doc写的不够准确,DI理解不足(日本人说看不懂我的日语TT)

综上所述,其实要求很严格,题目虽然非常简单,就是最普通的CRUD这些,但是也会一定程度上考虑是否能够熟练掌握工作中必备的开发技巧,DI,springboot的常用功能这种。

在我挂了三次以后,竟然,课长要求用Quarkus这个框架来重新做。本来自己所在组的后端是有在用Quarkus,貌似是因为在云上跑速度比较快?具体的原因自己也没有深究过,正好借用这个机会准备了解一下。

结果,竟然在各种地方就卡住了!

简单来说以下几个地方困扰到了我

  1. pom依赖
  2. DI的使用
  3. deploy(部署)

Quarkus的中文信息也比较少,好多问题谷歌后发现都没有中文博客可查,于是好多只能通过查看官方文档,正好锻炼了一下英语(谷歌翻译)。哈哈。

先说pom依赖,以前springboot都非常简单,用https://start.spring.io/ 就可以添加自己想要的依赖,但是Quarkus貌似是通过extension追加来增加依赖,知道写这篇文章时候才发现这个网站https://code.Quarkus.io/ 。真是后悔,要知道我以为这个框架自带RestApi的功能,写了个api后了老是启动不起来,后来查了半天资料才知道需要一个叫RESTEasy 的依赖。

其次,之前在使用springboot时候,只知道自己用的是jackson来解析,对这些也没有很意识到区别,想当然就使用了json的依赖,但是我从工作项目代码中借用(复制粘粘)的注解@JsonbProperty却用不了。好嘛,一顿谷歌,才发现RESTEasy JSON-B和RESTEasy jackson不是一个东西,具体可以参考下面这篇文章,我就不多叙述了。

Jackson:我是最牛掰的 Java JSON 解析器(有点虚)]:https://segmentfault.com/a/119000003848208

JavaEE的JSON API规范JSON-P/JSON-B]:https://blog.csdn.net/taiyangdao/article/details/85320579

pom鼓捣了半天,又发现下面有各种跟springboot不同的设置,懵逼了半天,照着tutorial偷了一些设置,终于能跑起来了。

最后说一下部署时候遇到的问题,之前都是deploy到heroku上,之前几次都是maven打好包,直接传到heroku上去

稍微查了一下发现了这篇文章,https://qiita.com/mr-hisa-child/items/2d6b9d482d3fd017332f

以为原来这么简单,结果试了一下,果然,不能顺利进行,这里遇到好多坑,分享一下,

首先构建docker image的docker file中有这么一步COPY *-runner /work/application,现实这步出错,找不到runner文件,看了一下target下面果然没有这个文件,查了半天为什么没有这个文件,看到了这篇文章

https://Quarkus.io/guides/building-native-image

https://access.redhat.com/documentation/ja-jp/red_hat_build_of_Quarkus/1.3/html/developing_and_compiling_your_Quarkus_applications_with_apache_maven/proc-configuring-the-project-output_Quarkus-maven

才知道,runner.jar需要设置pom才能生成,ok解决。下一位

然后docker copy的时候又显示`fast-jar : COPY target/Quarkus-app/lib : no such file or directory ,查了一下,在github issue上发现这位仁兄问的问题:https://github.com/Quarkusio/Quarkus/issues/12324

最后结尾说要设置.dockerignore,照做了,结果还是同样的错误。

最后实在没办法,谷歌了半天,决定使用uber-jar的方式部署,终于部署成功。具体参考这篇文章

https://yusuke.blog/2021/02/03/2916

有人要是知道docker image构建失败的原因,欢迎在评论中告诉我!!

关于Quarkus的文章:

https://mp.weixin.qq.com/s/Dq3hQrXE4XWH-MyjBAGMEw

https://segmentfault.com/a/1190000040072190

  • 版权声明: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!
  • Copyrights © 2020-2021 Joe
  • 访问人数: | 浏览次数:

请我喝杯咖啡吧~

支付宝
微信