我正在尝试在 jenkins 上的 docker 容器上运行
sonnarqube
扫描仪。我使用以下图片:
FROM node:16-alpine
我从这里安装
java
:
RUN apk --no-cache add openjdk11 --repository=http://dl-cdn.alpinelinux.org/alpine/edge/community
我从这里安装
sonnarqube scanner
:
RUN wget https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-4.2.0.1873.zip
运行扫描仪时,出现以下错误:
22:33:55 sonar-scanner-4.2.0.1873-linux/bin/sonar-scanner: exec: line 64: /e2e/sonar-scanner-4.2.0.1873-linux/jre/bin/java: not found
我检查了java路径:
22:33:49 Step 39/44 : RUN which java
22:33:49 ---> Running in 47df6c73c0b7
22:33:50 /usr/bin/java
并将其附加到我的
PATH
环境变量(sonnarqube 也可执行):
22:50:57 /usr/bin/java/bin:/sonar-scanner-4.2.0.1873/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
在 docs 中,他们说他们为 Linux 发行版提供了 JRE。
但是如果我检查 sonnarqube 文件夹,我只会看到:
22:50:39 drwxr-xr-x 5 root root 4096 Nov 25 21:50 .
22:50:39 drwxr-xr-x 1 root root 4096 Nov 25 21:50 ..
22:50:39 drwxr-xr-x 2 root root 4096 Nov 25 21:50 bin
22:50:39 drwxr-xr-x 2 root root 4096 Nov 25 21:50 conf
22:50:39 drwxr-xr-x 2 root root 4096 Nov 25 21:50 lib
没有
sonar-scanner-4.2.0.1873/jre/java/bin
jre
应该在 sonar-scanner-4.2.0.1873
文件夹中吗?我的 PATH
环境变量错误吗?我不明白为什么找不到java。
更新 该答案现已过时,现已被 @Alexey Kolesaev 提供的答案取代:https://stackoverflow.com/a/76271486/11543023
在 alpine 上安装 openJDK 11+ 存在问题。 Alpine Linux 使用
musl-libc
作为其 libc
,而大多数其他版本的 Linux 使用 GNU 的 C 库 glibc
。标准 Linux 软件是基于非 Alpine 版本构建的,例如 ubuntu 和 centos,因此通常会与 glibc
链接,因此无法在 Alpine 上成功执行,因为 libc
未链接到 java 安装。唯一的解决方法是安装 glibc
兼容层,这并不简单,或者使用 alpine-openjdk11 容器(您可能无法使用,因为它们不是官方镜像,因此在可维护性方面存在问题)
尝试 debian (ubuntu) 或 fedora (centos) 发行版,看看是否可以正常工作
如果您确实需要高山,那么:
export GLIBC_VERSION=2.34-r0
apk --no-cache add binutils curl
curl -sL https://alpine-pkgs.sgerrand.com/sgerrand.rsa.pub -o /etc/apk/keys/sgerrand.rsa.pub
curl -sLO https://github.com/sgerrand/alpine-pkg-glibc/releases/download/${GLIBC_VERSION}/glibc-${GLIBC_VERSION}.apk
curl -sLO https://github.com/sgerrand/alpine-pkg-glibc/releases/download/${GLIBC_VERSION}/glibc-bin-${GLIBC_VERSION}.apk
curl -sLO https://github.com/sgerrand/alpine-pkg-glibc/releases/download/${GLIBC_VERSION}/glibc-i18n-${GLIBC_VERSION}.apk
apk add --no-cache glibc-${GLIBC_VERSION}.apk glibc-bin-${GLIBC_VERSION}.apk glibc-i18n-${GLIBC_VERSION}.apk # you must be needed to add || true for alpine newer than 3.15
在我的测试中,GLIBC_VERSION 2.34-r0 只能工作。我尝试了新的,但不起作用