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安装,依次执行如下命令
-
123
sudo yum install -y yum-utils \
device-mapper-persistent-data \
lvm2
-
123
sudo yum-config-manager \
--add-repo \
https:
//download.docker.com/linux/centos/docker-ce.repo
-
1
sudo yum-config-manager --enable docker-ce-nightly
-
1
sudo yum install docker-ce docker-ce-cli containerd.io
3、安装docker-compose,依次执行如下命令
-
1
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
-
1
sudo chmod +x /usr/local/bin/docker-compose
4、安装sonar(本文使用版本为8.2,sonar定期对docker镜像文件进行更新,如需获取更多版本访问sonar镜像)
安装前需启动docker服务
1 2 3 | 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
1 | 常用命令集合 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | < br >构建并后台启动容器 docker-compose up -d 查看运行容器 docker-compose ps 或 docker ps 动态查看日志 docker-compose logs -f 或 docker logs -f sonar 重启 docker-compose restart |
docker-compose.yml文件存放在服务器执行命令当前目录,该文件内容如下
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | 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文件,配置内容如下
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | <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扫描,依次执行如下命令
-
1
mvn clean install <br>
// BUILD SUCCESS之后执行下条命令
-
1
mvn sonar:sonar<br>
// 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]
临时解决方案
1 2 3 4 | #当前为root用户可以使用命令解决 sysctl -w vm.max_map_count=262144 #如果不是root用户应该使用 sudo sysctl -w vm.max_map_count=262144 |
终极解决方案
1 2 3 | vim /etc/sysctl.conf #添加配置 vm.max_map_count=262144#使用命令使该设置生效sysctl -p |
7、卸载docker
1、查询docker安装过的包:
1 | yum list installed | grep docker |
2、删除安装包:
1 | yum remove docker-ce.x86_64 ddocker-ce-cli.x86_64 -y |
3、删除镜像/容器等
1 | rm -rf / var /lib/docker |
到此,docker安装sonar及maven扫描java代码就完成了,希望能对你有所帮助,感谢看官阅读,觉得有帮助留个赞哦。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?