为什么选用7.4? 因为sonar8.x之后不支持jdk8了,实实在在的踩了坑。
参考博客:https://www.cnblogs.com/shenh/p/13428029.html
感谢作者
一、安装sonarQube7.4
1.拉取镜像
docker pull sonarqube:7.4-community
2.创建工作目录
mkdir -p /data/sonarqube
3.修改系统参数
echo "vm.max_map_count=262144" > /etc/sysctl.conf
//查看
sysctl -p
4.运行一个容器
docker run -d --name sonartest sonarqube:7.4-community
//将容器内重要文件复制到宿主机
docker cp sonartest:/opt/sonarqube/conf /data/sonarqube
docker cp sonartest:/opt/sonarqube/data /data/sonarqube
docker cp sonartest:/opt/sonarqube/logs /data/sonarqube
docker cp sonartest:/opt/sonarqube/extensions /data/sonarqube
//停止容器后删除
docker stop sonartest
docker rm sonartest
//创建网络
docker network create sonarqube-tier
//给文件赋权
chmod -R 777 /data/sonarqube/
5.创建容器并运行(mysql)
//进入mysql
docker exec -it mysql /bin/bash
mysql -uroot -p # 密码
GRANT ALL ON *.* TO 'root'@'%'; #所有网络都可访问
create database sonar; #创建 sonarqube 数据库
# 添加远程登录用户:sonar ,并授予权限。
CREATE USER 'sonar'@'%' IDENTIFIED WITH mysql_native_password BY 'sonar';
GRANT ALL PRIVILEGES ON *.* TO 'sonar'@'%';
flush privileges; # 刷新权限
docker run -d --name sonar -p 9090:9000 \
-e ALLOW_EMPTY_PASSWORD=yes \
-e SONARQUBE_DATABASE_USER=sonar \
-e SONARQUBE_DATABASE_NAME=sonar \
-e SONARQUBE_DATABASE_PASSWORD=sonar \
-e SONARQUBE_JDBC_URL="jdbc:数据库IP://mysql:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=false" \
--restart=always \
--net sonarqube-tier \
--privileged=true \
-v /data/sonarqube/logs:/opt/sonarqube/logs \
-v /data/sonarqube/conf:/opt/sonarqube/conf \
-v /data/sonarqube/data:/opt/sonarqube/data \
-v /data/sonarqube/extensions:/opt/sonarqube/extensions\
sonarqube:7.4-community
注意看容器里有无“sonar”、“sonartest”名称的容器,如果存在就删掉,否则会报错
二、访问sonar并扫描代码
1.地址为刚刚设置的9090
2.初始帐号密码为:admin、admin
3.汉化
目前在市场只能搜索到9.0的汉化包,需要去官网下载对应的中文包
地址:https://github.com/SonarQubeCommunity/sonar-l10n-zh/tags
之后放进 /data/sonarqube/extensions/plugins
重启sonar即可
docker restart sonar
三、扫描项目
1.创建项目
令牌随意输入
在项目里运行maven命令即可
注意:如果报错
mvn命令添加sonar.java.binaries参数:
-Dsonar.java.binaries=target/classes
若target目录下没有生成classes目录,可以先build下项目,也可以直接写如下路径:
-Dsonar.java.binaries=target/sonar
四、最后
上效果图