Sonar 是一个用于代码质量管理的开源平台,用于管理源代码的质量 通过插件形式,可以支持包括 java,C#,C/C++,PL/SQL,Cobol,JavaScrip,Groovy 等等。sonar服务搭建有很多种方式,本文介绍通过docker方式安装sonar服务器的流程,以供参考。
1、本次所使用的服务器相关信息简单罗列
服务器使用CenterOS 7(需连接互联网,本文使用yum方式安装,方便快捷),
JDK版本为JDK11(sonar对JDK的支持从7.7之后均为JDK11)
2、docker安装,依次执行如下命令
-
sudo yum install -y yum-utils \ device-mapper-persistent-data \ lvm2
-
sudo yum-config-manager \ --add-repo \ https://download.docker.com/linux/centos/docker-ce.repo
-
sudo yum-config-manager --enable docker-ce-nightly
-
sudo yum install docker-ce docker-ce-cli containerd.io
3、安装docker-compose,依次执行如下命令
-
sudo curl -L "https://github.com/docker/compose/releases/download/1.26.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
-
sudo chmod +x /usr/local/bin/docker-compose
4、安装sonar(本文使用版本为8.2,sonar定期对docker镜像文件进行更新,如需获取更多版本访问sonar镜像)
安装前需启动docker服务
systemctl daemon-reload
systemctl restart docker.service
常用命令集合
启动 docker
systemctl start docker
拉取 postgres 镜像
docker pull postgres
拉取 sonarqube 镜像
docker pull sonarqube
查看下载的镜像
docker images
然后使用命令docker-compose -f docker-compose.yml up
常用命令集合
构建并后台启动容器
docker-compose up -d
查看运行容器
docker-compose ps
或
docker ps
动态查看日志
docker-compose logs -f
或
docker logs -f sonar
重启
docker-compose restart
docker-compose.yml文件存放在服务器执行命令当前目录,该文件内容如下
version: "2"
services:
sonarqube:
image: sonarqube:8.2-community
depends_on:
- db
ports:
- "9000:9000"
networks:
- sonarnet
environment:
SONAR_JDBC_URL: jdbc:postgresql://db:5432/sonar
SONAR_JDBC_USERNAME: sonar
SONAR_JDBC_PASSWORD: sonar
volumes:
- sonarqube_data:/opt/sonarqube/data
- sonarqube_extensions:/opt/sonarqube/extensions
- sonarqube_logs:/opt/sonarqube/logs
- sonarqube_temp:/opt/sonarqube/temp
db:
image: postgres
networks:
- sonarnet
environment:
POSTGRES_USER: sonar
POSTGRES_PASSWORD: sonar
volumes:
- postgresql:/var/lib/postgresql
# This needs explicit mapping due to https://github.com/docker-library/postgres/blob/4e48e3228a30763913ece952c611e5e9b95c8759/Dockerfile.template#L52
- postgresql_data:/var/lib/postgresql/data
networks:
sonarnet:
driver: bridge
volumes:
sonarqube_data:
sonarqube_extensions:
sonarqube_logs:
sonarqube_temp:
postgresql:
postgresql_data:
5、访问sonar及使用maven进行检查
登录使用http://x.x.x.x:9000/
用户名/密码:admin/admin
maven检查可配置settings.xml文件,配置内容如下
<profile>
<id>sonar</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<sonar.login>admin</sonar.login>
<sonar.password>admin</sonar.password>
<sonar.host.url>http://x.x.x.x:9000</sonar.host.url>
<sonar.inclusions>**/*.java</sonar.inclusions>
</properties>
</profile>
<activeProfiles>
<activeProfile>sonar</activeProfile>
</activeProfiles>
cmd到需要扫描工程目录下,首先需要所扫描工程通过maven编译,然后执行sonar扫描,依次执行如下命令
-
mvn clean install
// BUILD SUCCESS之后执行下条命令 -
mvn sonar:sonar
// BUILD SUCCESS之后,浏览器访问sonar服务,扫描结果可能需要后台分析一会才会呈现出来。
6、部分报错问题解决
在安装及启动sonar服务的过程中,使用命令docker-compose -f docker-compose.yml up可查看后台打印信息,报错信息截取片段中存在如max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
临时解决方案
#当前为root用户可以使用命令解决
sysctl -w vm.max_map_count=262144
#如果不是root用户应该使用
sudo sysctl -w vm.max_map_count=262144
终极解决方案
vim /etc/sysctl.conf
#添加配置
vm.max_map_count=262144
#使用命令使该设置生效
sysctl -p
7、卸载docker
1、查询docker安装过的包:
yum list installed | grep docker
2、删除安装包:
yum remove docker-ce.x86_64 ddocker-ce-cli.x86_64 -y
3、删除镜像/容器等
rm -rf /var/lib/docker
到此,docker安装sonar及maven扫描java代码就完成了,希望能对你有所帮助,感谢看官阅读,觉得有帮助留个赞哦。