SonarQube 7.9的JDK Alpine镜像升级问题整理
发布日期:2021-06-30 20:13:39 浏览次数:2 分类:技术文章

本文共 3225 字,大约阅读时间需要 10 分钟。

在这里插入图片描述

SonarQube的LTS 7.9版需要的Java 11,否则即使镜像构建成功,在启动的时候还是会提示出错导致服务无法运行。而如果使用了OpenJDK的Alpine版的镜像,升级的时候会发现目前仍然不存在Alpine版本的Java 11的镜像。另外从7.9开始SonarQube抛弃了MySQL是另外一个重要的事项。

SonarQube 7.9.1镜像

使用OpenJDK 8 的Alpine基础镜像的情况下,SonarQube7.9和7.9.1的镜像大小相差无几,都是不到300M。

在这里插入图片描述

错误信息提示

使用docker-compose启动MySQL + SonarQube的服务,会发现SonarQube无法启动,错误提示信息入下所示:

sonarqube_1  | Exception in thread "main" java.lang.IllegalStateException: SonarQube requires Java 11+ to runsonarqube_1  | 	at org.sonar.application.App.checkJavaVersion(App.java:93)sonarqube_1  | 	at org.sonar.application.App.start(App.java:56)sonarqube_1  | 	at org.sonar.application.App.main(App.java:98)

不存在的OPENJDK 11(Alpine版)

Alpine版本的JDK的tag为<版本号>-alpine,比如Java 8 和Java 12

[root@liumiaocn ~]# docker images |grep openjdkdocker.io/openjdk              8-alpine            a3562aa0b991        5 months ago        105 MBdocker.io/openjdk              12-alpine           0c68e7c5b7a0        8 months ago        339 MB[root@liumiaocn ~]#

但是Java 11并不存在,使用docker pull试图拉取则会提示错误

[root@liumiaocn ~]# docker pull openjdk:11-alpineTrying to pull repository docker.io/library/openjdk ... manifest for docker.io/openjdk:11-alpine not found[root@liumiaocn ~]#

不支持MySQL

SonarQube 7.9及其以后不再提供对MySQL的支持,如果试图和MySQL进行关联,可能会得到如下的错误信息提示

sonarqube_1  | #############################################################################################################sonarqube_1  | #         End of Life of MySQL Support : SonarQube 7.9 and future versions do not support MySQL.            #sonarqube_1  | #         Please migrate to a supported database. Get more details at                                       #sonarqube_1  | #         https://community.sonarsource.com/t/end-of-life-of-mysql-support                                  #sonarqube_1  | #         and https://github.com/SonarSource/mysql-migrator                                                 #sonarqube_1  | #############################################################################################################

仔细看了一下今年在7.9的LTS版发布的时候SonarQube的社区中原来已经有过相关提示了。

无法打开es.log的错误提示

sonarqube_1  | tail: can't open './logs/es.log': No such file or directorysonarqube_1  | tail: './logs/es.log' has appeared;  following new file...省略sonarqube_1  | 	at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:124) ~[elasticsearch-cli-6.8.0.jar:6.8.0]sonarqube_1  | 	at org.elasticsearch.cli.Command.main(Command.java:90) ~[elasticsearch-cli-6.8.0.jar:6.8.0]sonarqube_1  | 	at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:116) ~[elasticsearch-6.8.0.jar:6.8.0]sonarqube_1  | 	at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:93) ~[elasticsearch-6.8.0.jar:6.8.0]sonarqube_1  | Caused by: java.lang.RuntimeException: can not run elasticsearch as root

实际上的问题是这里“can not run elasticsearch as root”。SonarQube镜像必须指定USER才行。

Sonar-Scanner的Java版要求

在SonarQube 8之后,Sonar-Scanner将会被要求使用Java 11

WARN: SonarScanner will require Java 11+ to run starting in SonarQube 8.x

其他问题

在stack overflow上也有一个问题关于为什么没有Alpine 的JDK 11和为什么JDK 11变得这么大的问题:

  • https://stackoverflow.com/questions/53375613/why-is-the-java-11-base-docker-image-so-large-openjdk11-jre-slim

直接回答中并没有给出特别清晰地说明,但是Alpine版本的JDK 11的镜像没有这个事实也说明了,而且musl的关键字又一次出现在我们的视线之中。

转载地址:https://liumiaocn.blog.csdn.net/article/details/102691257 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:使用docker-compose快速搭建环境: SonarQube 6.7.1 + MySQL 5.7.16
下一篇:Jenkins基础:使用NPM构建前端应用7:使用SonarQube检查前端代码质量

发表评论

最新留言

路过,博主的博客真漂亮。。
[***.116.15.85]2024年04月23日 14时53分53秒