Captain's Geek-Island Captain's Geek-Island
首页
生活如斯乎
架构师的路
  • 分类
  • 标签
  • 归档
沉洋官网 (opens new window)

SleepyOcean

走,找新大陆去
首页
生活如斯乎
架构师的路
  • 分类
  • 标签
  • 归档
沉洋官网 (opens new window)
  • 计算机基础

  • 并发专题

  • 性能调优专题

  • 工具专题

  • 源码框架专题

  • 设计模式

  • 分布式专题

  • 实战专题

    • QA展板
    • ES高可用集群搭建
    • Mysql主备复制架构
    • docker搭建基础中间件
    • docker部署微服务
    • k8s集群搭建
    • dockerhub私有容器仓库搭建
    • docker搭建sonarQube
      • 一、搭建步骤
        • 1)搭建sonarQube
        • 2)访问sonarQube
      • 二、项目中使用
        • 1)在IDEA中使用
    • docker搭建Confluence
    • docker搭建GitLab
    • Electron开发跨平台应用指南
    • Docker搭建ElasticSearch开发环境
    • Docker搭建Jenkins
    • Docker搭建ELK
    • Docker搭建nocas-server
    • Docker搭建各类Paas服务
  • 技术杂文

  • 云原生专题

  • 大数据分析专题

  • 前端专题

  • 运维专题

  • 经验专题

  • 面试专题

  • 软实力专题

  • 架构师的路
  • 实战专题
SleepyOcean
2020-11-05

Docker搭建sonarQube

SonarQube 是一款用于代码质量管理的开源工具,它主要用于管理源代码的质量。 通过插件形式,可以支持众多计算机语言,比如 java, C#, go,C/C++, PL/SQL, Cobol, JavaScrip, Groovy 等。sonar可以通过PMD,CheckStyle,Findbugs等等代码规则检测工具来检测你的代码,帮助你发现代码的漏洞,Bug,异味等信息。

Sonar 不仅提供了对 IDE 的支持,可以在 Eclipse和 IntelliJ IDEA 这些工具里联机查看结果;同时 Sonar 还对大量的持续集成工具提供了接口支持,可以很方便地在持续集成中使用 Sonar。

# 一、搭建步骤

# 1)搭建sonarQube

方案一:postgres + sonarQube

# 拉取postgres数据库镜像
$ docker pull postgres:10

# 拉取sonarQube镜像。这里以7.9.1-community为例
$ docker pull sonarqube:7.9.1-community

# 启动postgres
$ docker run -d -p 10003:5432 -e POSTGRES_PASSWORD=1 --name postgres postgres:10

# 创建sonar数据库。这里通过进入docker容器中
$ docker exec -it postgres /bin/bash
# 进入postgres命令行
root@3910d724e457:/# psql -U postgres
# 查看已有数据库
postgres=# \l
# 创建sonar数据库
postgres=# CREATE DATABASE sonar;
# 推出postgres命令行
postgres=# \q

# 启动sonarQube
$ docker run -d -p 11005:9000 --link postgres:postgres -e "SONARQUBE_JDBC_URL=jdbc:postgresql://postgres:5432/sonar" -e "SONARQUBE_JDBC_USERNAME=postgres" -e "SONARQUBE_JDBC_PASSWORD=1" --name sonarqube sonarqube:7.9.1-community
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22

方案二:mysql + sonarQube(不推荐)

# 拉取mysql数据库镜像(sonarqube:7.4 不支持 mysql:5.7 以上)
$ docker pull mysql:5.7

# 创建工作目录,为接下来的挂载自定义映射路径做准备
$ mkdir -p /usr/mysql/conf
$ mkdir -p /usr/mysql/logs
$ mkdir -p /usr/mysql/data

# 创建网络
$ docker network create sonarqube-tier

# 启动mysql
$ docker run --name mysql -d -p 3306:3306--net sonarqube-tier -v /usr/mysql/conf:/etc/my.cnf.d -v /usr/mysql/logs:/logs -v /usr/mysql/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
--restart always \
--privileged=true \
--network-alias mysql \
mysql:5.7

# 创建sonar数据库。这里通过进入docker容器中
$ docker exec -it mysql /bin/bash
======= 操作步骤 =======
# 密码 123456
mysql -uroot -p  
#所有网络都可访问
GRANT ALL ON *.* TO 'root'@'%';  
#创建 sonarqube 数据库
create database sonar;     

# 添加远程登录用户:sonar ,并授予权限。
CREATE USER 'sonar'@'%' IDENTIFIED WITH mysql_native_password BY 'sonar';  
GRANT ALL PRIVILEGES ON *.* TO 'sonar'@'%';
# 刷新权限
flush privileges; 
======= 操作结束 =======


# 拉取sonarqube:7.4-community镜像
$ docker pull sonarqube:7.4-community

# 创建工作目录
$ mkdir -p /data/sonarqube

# 修改系统参数
$ echo "vm.max_map_count=262144" > /etc/sysctl.conf
$ sysctl -p

# 运行一个test容器
$ 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 rm sonartest

# 修改文件夹权限
$ chmod -R 777 /data/sonarqube/


# 启动sonarQube。这里postgres对应的IP为192.168.39.10
$ 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:mysql://mysql:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=false" \
 --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
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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77

官网上已经声明 sonarQube 7.9 版本以上不再支持 mysql 了,我们为了以后升级新版本不做数据库迁移,尽量使用 postgresql 。

# 2)访问sonarQube

在浏览器中输入:192.168.39.10:9000,访问sonarQube。(账户/密码:admin/admin)

# 二、项目中使用

# 1)在IDEA中使用

首先,安装插件 SonarLint。与上面搭建的sonarQube关联起来。

然后,在pom.xml文件中的build标签下的插件中添加jacoco插件

...
            <plugin>
                <groupId>org.jacoco</groupId>
                <artifactId>jacoco-maven-plugin</artifactId>
                <version>0.8.4</version>
                <executions>
                    <execution>
                        <id>jacoco-initialize</id>
                        <goals>
                            <goal>prepare-agent</goal>
                        </goals>
                    </execution>
                    <execution>
                        <id>jacoco-report</id>
                        <phase>package</phase>
                        <goals>
                            <goal>report</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22

接着,执行mvn test,会在target目录下生成jacoco.exec文件,表明jacoco正确执行。

最后,执行sonar命令:mvn sonar:sonar -Dsonar.host.url=[yours sonarQube url] -Dsonar.login=[yours id]

#sonarQube
上次更新: 2021/01/18, 09:01:00

← dockerhub私有容器仓库搭建 docker搭建Confluence →

新鲜出炉
01
记录 - 快速搭建自动化部署平台
04-13
02
Docker搭建各类Paas服务
03-01
03
系统配置 - Android TV配置
02-12
更多文章>
Copyright © 2019-2022 SleepyOcean | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式