docker 安装sonarqube,maven,sonar-scanner

前言

由于公司没有多余的虚拟机给测试使用,为了节省资源又可以方便管理,我们使用docker 安装sonarqube

安装

安装分为
sonar-web端(包括数据库),sonarclient插件端(maven端,sonar-scanner端)
整个扫描流程如下图:
docker 安装sonarqube,maven,sonar-scanner_第1张图片

sonar-web:

1.首先确保你的docker是否安装,没有的话请安装docker,docker安装自行搜搜。

docker -v

2.拉取镜像,默认都是从 DockerHub 拉取:
拉取数据库镜像,新版不支持mysql数据库(从SonarQube 7.9开始,支持的数据库变为:Oracle、Microsoft SQL Server和PostgreSQL)。

docker pull postgres

拉去sonarqube 镜像,我拉取的镜像最新版是7.9.1

docker pull sonarqube:7.9.1-community

3.启动postgresql

docker run --name postgresqldb -e POSTGRES_USER=sonar -e POSTGRES_PASSWORD=sonar -d postgres

启动 sonarqube

docker run --name sq --link postgresqldb -e SONARQUBE_JDBC_URL=jdbc:postgresql://postgresqldb:5432/sonar -p 9000:9000 -d sonarqube:7.9.1-community

4.登录 打开 http://ip:9000/ , 点击 “Log in”,默认账号密码为admin,amdin
docker 安装sonarqube,maven,sonar-scanner_第2张图片
5. 汉化
sonarqube 有个应用市场,可以安装插件,比如汉化插件Chinese pack 。
登录账号后,在路径Administration→Marketplace→Plugins 下搜索,Chinese pack ,install后,会有让你restart,重启即可。
docker 安装sonarqube,maven,sonar-scanner_第3张图片

汉化后的界面如下:
docker 安装sonarqube,maven,sonar-scanner_第4张图片

sonarclient插件端
maven客户端扫描

只适用于maven项目的java代码,扫描出来的准确性比使用sonar-scanner准一点。
maven 插件:
客户端所用到的docker镜像,自己可以找一个支持jdk8的就可以。可以参考maven dockerhub github上面的精简版Dockerfile创建镜像
maven Dockfile:

FROM openjdk:8-jdk-alpine
RUN apk add --no-cache curl tar bash procps
ARG MAVEN_VERSION=3.6.1
ARG USER_HOME_DIR="/root" ARG SHA=b4880fb7a3d81edd190a029440cdf17f308621af68475a4fe976296e71ff4a4b546dd6d8a58aaafba334d309cc11e638c52808a4b0e818fc0fd544226d952544
ARG BASE_URL=https://apache.osuosl.org/maven/maven-3/${MAVEN_VERSION}/binaries
RUN mkdir -p /usr/share/maven /usr/share/maven/ref \
      && curl -fsSL -o /tmp/apache-maven.tar.gz ${BASE_URL}/apache-maven-${MAVEN_VERSION}-bin.tar.gz \
      && echo "${SHA} /tmp/apache-maven.tar.gz" | sha512sum -c - \
      && tar -xzf /tmp/apache-maven.tar.gz -C /usr/share/maven --strip-components=1 \
      && rm -f /tmp/apache-maven.tar.gz \
      && ln -s /usr/share/maven/bin/mvn /usr/bin/mvn
ENV MAVEN_HOME /usr/share/maven
ENV MAVEN_CONFIG "$USER_HOME_DIR/.m2"
COPY mvn-entrypoint.sh /usr/local/bin/mvn-entrypoint.sh
COPY settings-docker.xml /usr/share/maven/ref/
ENTRYPOINT ["/usr/local/bin/mvn-entrypoint.sh"]
CMD ["mvn"]

修改maven settings.xml配置
①、在pluginGroups中增加sonar依赖:


    
   
  org.sonarsource.scanner.maven
  

②、配置sonar地址 可以在profiles中指定sonar服务器地址:


        sonar
        
            true
        
        
         
            
                http://localhost:9000
            
        
    

添加环境变量:

vim ~/.bashrc
export MAVEN_HOME=/usr/local/apache-maven-3.6.2
export PATH=${PATH}:${MAVEN_HOME}/bin
source ~/.bashrc

dockerfile编写后手动build一下生成docker 镜像(如果不会,请自行查找资料)
验证是否安装成功,在启动镜像后输入一下命令即可。

mvn -v

在docker里面
执行扫描:需要在你的代码有pom目录下执行。(注意,不加-Dsonar.java.binaries会报错)

mvn sonar:sonar -Dsonar.java.binaries=target/classes

也可以在执行过程中添加:

mvn sonar:sonar -Dsonar.host.url=http://192.168.2xx.xxx:30006

sonar-scanner客户端

适用于大部分的代码,包括java,js,以及python等,我们项目一般扫描js代码,java项目由于都是maven项目,都使用maven插件扫描。

下载sonar-scanner软件版本
https://docs.sonarqube.org/latest/analysis/scan/sonarscanner/

下载直接在解压包里修改sonar scanner配置文件,保存。
conf/sonar-scanner.properties。
根据数据库使用情况进行取消相关的注释即可,同时需要添加数据库用户名和密码信息,即配置要访问的sonar服务和数据库服务器地址(新版的sonar-scanner 似乎可以不用配数据库,待验证)

#----- Default SonarQube server
sonar.host.url=http://192.xxx.xxx.xxx:9000

#----- Default source code encoding
#sonar.sourceEncoding=UTF-8
sonar.jdbc.password=jdbc:postgresql://postgresqldb:5432/sonar
sonar.jdbc.username=sonar
sonar.jdbc.password=sonar

sonar-scanner 的dockerfile文件内容:

FROM openjdk:8-jdk-alpine
RUN  sed -i 's/dl-cdn.alpinelinux.org/mirrors.ustc.edu.cn/g' /etc/apk/repositories
RUN  apk add nodejs
RUN  apk add npm
ADD  sonar-scanner-4.2.0.1873-linux.tar  /usr/share/
ENV PATH="/usr/share/sonar-scanner-4.2.0.1873-linux/bin:${PATH}"
COPY sonar-project.properties /run/
CMD echo "$PATH"

扫描js项目demo:
创建sonar-project.properties文件,以js代码为例在工程根目录下新建立一个sonar-project.properties配置文件(后面不能有空格字符),projectName为你展示项目的名字。

sonar.projectKey=test
sonar.projectName=test
sonar.projectVersion=1.0
sonar.sources=./
sonar.language=js
sonar.sourceEncoding=UTF-8

扫描java项目demo:
需要在目录下创建target/sonar 目录,又不然会报错。

sonar.projectKey=test
sonar.projectName=test
sonar.projectVersion=1.0
sonar.sources=./
sonar.language=java
sonar.sourceEncoding=UTF-8
sonar.java.binaries=target/sonar

启动镜像后,直接使用:

sonar-scanner -v 即可验证是否安装

执行扫描:下载代码后,拷贝sonar-project.properties 到你的代码下执行以下命令:

sonar-scanner

你可能感兴趣的:(静态扫描,docker安装sonar,安装sonarqube,docker安装maven,docker安装scanner,sonar数据库)