GirlsBoy
回首向来萧瑟处,归去,也无风雨也无晴。
posts - 36,comments - 1,views - 12万

  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安装,依次执行如下命令

  • 1
    2
    3
    sudo yum install -y yum-utils \
          device-mapper-persistent-data \
          lvm2
  • 1
    2
    3
    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代码就完成了,希望能对你有所帮助,感谢看官阅读,觉得有帮助留个赞哦。

posted on   GirlsBoy  阅读(339)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
< 2025年3月 >
23 24 25 26 27 28 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 1 2 3 4 5

java\web应用开发&研究

梦想程序改变生活

成为一个了不起的人

点击右上角即可分享
微信分享提示