Linux下Docker安装SonarQube(PostgreSQL)

news/2024/7/9 20:33:21 标签: linux, docker, postgresql, SonarQube

SonarQube是一种自动代码审查工具,用于检测代码中的错误、漏洞和代码异味。 它可以与现有的工作流程集成,以支持跨项目分支和拉取请求的持续代码检查。

本文基于Linux操作系统,在Docker容器中部署SonarQube服务,并进行简单的配置和使用。SonarQube7.8版本之后不再支持Mysql数据库,教程选用的是最新版本的Postgresql数据库,SonarQube使用的版本是8.8-community

1.安装Postgresql

1.1 下载 docker.com/_/postgres">PostgreSQL镜像
docker pull postgres
1.2 启动容器
docker run -d -p 5432:5432 -v /data/postgres:/var/lib/postgresql/data -e POSTGRES_PASSWORD=123456 -e ALLOW_IP_RANGE=0.0.0.0/0 --name postgres postgres

参数说明:

POSTGRES_PASSWORD 是数据库初始密码

ALLOW_IP_RANGE=0.0.0.0/0 允许任何主机访问

1.3 进入postgres容器
docker exec -it postgres bash

注意: 这里的postgres1.2--name的参数

SonarQube_23">1.4 使用默认用户postgres创建SonarQube数据库
# 切换postgres用户
su postgres
# 进入数据库
psql
# 创建sonar数据库
CREATE DATABASE sonar;
# 退出数据库
\q
# 退出postgres用户
exit
# 退出容器
exit

SonarQube_38">2. 部署SonarQube

2.1 下载docker.com/_/sonarqube">SonarQube镜像
docker pull sonarqube:8.8-community
2.2 创建Volume(可忽略此步骤)
docker volume create --name sonarqube_data
docker volume create --name sonarqube_logs
docker volume create --name sonarqube_extensions
docker volume create --name sonarqube_conf
2.3 启动容器
docker run -d --name sonarqube \
    -p 9000:9000 \
    -e SONAR_JDBC_URL=jdbc:postgresql://192.168.14.5:5432/sonar \
    -e SONAR_JDBC_USERNAME=postgres \
    -e SONAR_JDBC_PASSWORD=123456 \
    -v sonarqube_data:/opt/sonarqube/data \
    -v sonarqube_extensions:/opt/sonarqube/extensions \
    -v sonarqube_logs:/opt/sonarqube/logs \
    -v sonarqube_conf:/opt/sonarqube/conf \
    sonarqube:8.8-community

docker logs -f sonarqube 查看日志发现报错

错误日志

修改配置

vim /etc/sysctl.conf

最后一行添加vm.max_map_count=262144,保存退出
加载使其生效

sysctl -p

重新启动容器

docker start sonarqube

浏览器访问http://主机IP:9000,使用默认账号(admin)密码(admin)登录,根据提示修改原始密码

3.配置SonalQube

3.1 生成密钥

Administration > Security > Users,选择用户Tokens一栏,根据提示在Generate Tokens输入框中输入Token名称,点击Generate生成Token,点击Copy复制保存。

找到Token生成
生成Token

注意:这里的复制Token界面一旦关闭,无法再次查看Token内容,请妥善保存

3.2 用户Token

Token可以调用SonarQube相关API,以进行调试及开发。

3.2.1 代码调试(以GO为例)
package main

import (
	"fmt"
	"io/ioutil"
	"net/http"
	"net/url"
	"strings"
)

var createPro = "http://192.168.14.5:9000/api/projects/create"

func main() {
	v := url.Values{}
	v.Add("name", "test")
	v.Add("project", "test")
	v.Add("visibility", "public")
	fmt.Println(v.Encode())
	req, err := http.NewRequest("POST", createPro, strings.NewReader(v.Encode()))
	if err != nil {
		fmt.Println(err)
		return
	}
	// 这里的username可直接使用生成的Token,无需密码;或直接用账号密码进行验证
	req.SetBasicAuth("3cf069236f72e95a64aad2b5714fb717ca080249", "")
	req.Header.Set("Content-Type", "application/x-www-form-urlencoded")
	resp, err := http.DefaultClient.Do(req)
	if err != nil {
		fmt.Println(err)
		return
	}
	fmt.Println(resp.StatusCode)
	data, err := ioutil.ReadAll(resp.Body)
	if err != nil {
		fmt.Println(err)
		return
	}
	defer resp.Body.Close()
	fmt.Println(string(data))
}
3.2.2 Postman调试
  1. 填写请求路径

  2. 点击Authorization,Type选择Basic Auth,在username中填写刚才生成的TokenAuthorization

  3. 点击Body,选择x-www-form-urlencoded,填写所需Key-Value参数

  4. 发送请求
    发送请求

3.2 汉化(可选)

Administration > Marketplace > Plugins,搜索Chinese,选择对应插件安装,稍等片刻即可安装成功,页面上方会出现重启服务重置选择按钮,按需选择就行了,个人觉得英文界面好用一些
汉化

SonarQube_154">4.SonarQube的使用

4.1 安装SonarScanner(其他安装方式请参照官方文档)
4.1.1 下载二进制安装包
wget https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-4.6.2.2472-linux.zip
4.1.2 解压
unzip sonar-scanner-cli-4.6.2.2472-linux.zip -d /usr/local/
4.1.3 添加到PATH(建立软连接)
ln -s /usr/local/sonar-scanner-4.6.2.2472-linux/bin/sonar-scanner /usr/bin/

ln -s /usr/local/sonar-scanner-4.6.2.2472-linux/bin/sonar-scanner-debug /usr/bin/

测试安装是否成功

sonar-scanner -h

输出如下信息,证明安装无误

INFO: 
INFO: usage: sonar-scanner [options]
INFO: 
INFO: Options:
INFO:  -D,--define <arg>     Define property
INFO:  -h,--help             Display help information
INFO:  -v,--version          Display version information
INFO:  -X,--debug            Produce execution debug output
4.2 生成扫描代码
4.2.1 创建项目
  1. 登录SonarQube服务界面,点击Create new project > Manually或右上角Add project > Manually

  2. 输入合法的Project keyDisplay name,点击Set upcreate project

  3. 填写一个Token名称生成新的Token,或使用上面生成的Token,点击Continue继续下一步填写Token

  4. 选择合适选项,生成如下扫描代码(因为之前已经安装好SonarScanner,故忽略Download步骤)

生成扫描代码

sonar-scanner \
  -Dsonar.projectKey=test \
  -Dsonar.sources=. \
  -Dsonar.host.url=http://192.168.14.5:9000 \
  -Dsonar.login=3cf069236f72e95a64aad2b5714fb717ca080249

如果你想获取更详细的Debug信息,可在命令后面添加以下任一参数

-X,--verbose, -Dsonar.verbose=true

更多参数请参照官方文档

参数解析:

-Dsonar.projectKey 项目名称,扫描完毕后会将数据发送给对应的项目

-Dsonar.sources 代码目录,默认值是`.`,表示当前目录,故该命令应在代码根目录下执行

-Dsonar.host.url 服务器地址

-Dsonar.login 登录Token
4.3 执行扫描

点击Copy复制扫描代码,在已安装SonarScanner的服务上的代码根目录执行
出现如下日志说明扫描完毕,此时可刷新管理界面或直接访问日志中的http://192.168.14.5:9000/dashboard?id=test 查看扫描结果

INFO: Analysis report generated in 114ms, dir size=156 KB
INFO: Analysis report compressed in 299ms, zip size=81 KB
INFO: Analysis report uploaded in 174ms
INFO: ANALYSIS SUCCESSFUL, you can browse http://192.168.14.5:9000/dashboard?id=test
INFO: Note that you will be able to access the updated dashboard once the server has processed the submitted analysis report
INFO: More about the report processing at http://192.168.14.5:9000/api/ce/task?id=AXplL1OzMN_oVHnT4W6t
INFO: Analysis total time: 8.154 s
INFO: ------------------------------------------------------------------------
INFO: EXECUTION SUCCESS
INFO: ------------------------------------------------------------------------
INFO: Total time: 13.451s
INFO: Final Memory: 13M/47M
INFO: ------------------------------------------------------------------------

本文是根据学习笔记整理而成,如有错误或不当之处,望各位读者海涵,同时欢迎各位留言或Email批评指正,不胜感激。


http://www.niftyadmin.cn/n/1736579.html

相关文章

小何的第一篇博客+GitHub的基本设置

文章目录前言一、Github二、设置步骤1.注册登录2.工具的下载与安装3.本地资源的上传与下载总结前言 虽然博客和GitHub已经注册许久&#xff0c;但平时也只是碰到问题&#xff0c;需要查询资料的时候上来看一看。本着强化自身的目的&#xff0c;来进行一次系统的知识回顾与梳理…

C语言简介与vs编写hello word

文章目录前言一、C语言简介1.什么是C语言&#xff1f;2.C语言标准及发展过程3.C语言开发工具二、VS编写C语言1.写代码流程2.第一个C语言编写过程&#xff08;以vs2013为例&#xff09;总结前言 今天正式开始C语言的回顾与学习&#xff0c;在复习C语言的基本语法之前&#xff0…

VS2022编写C语言及背景美化

文章目录前言一、VS2022编写C语言基本步骤二、VS2022背景美化1.安装插件2.插件的使用总结前言 上一篇文章介绍了什么是C语言及使用VS2013编写C语言的基本步骤&#xff0c;现在再来介绍一些最新的VS编译器VS2022编写C语言的基本步骤 一、VS2022编写C语言基本步骤 基本步骤 起始…

C语言基本数据类型及变量

文章目录前言一、C语言基本数据类型二、变量1.定义变量2.变量的分类3.变量的使用总结前言 介绍一下C语言中基本数据类型以及如何使用&#xff0c;还有变量的相关知识点 一、C语言基本数据类型 计算机语言是通过写程序的方式模拟一些行为来解决生活中的问题&#xff0c;因而计…

C语言变量和常量

文章目录前言一、变量的作用域和生命周期1.变量的作用域2.变量的生命周期二、常量&#xff08;分类学习&#xff09;1.字面常量2.const修饰的常变量3.#define定义的标识符常量4.枚举常量总结前言 上一篇文章已经介绍了C语言中有关变量的一些内容&#xff0c;包括如何定义变量、…

DataGrip和dbeaver成功连接Phoenix及避坑指南(pheonix5.0-hbase2.0)

文章目录前言一、dbeaver连接Phoenix二、踩坑之旅1.第一次2.第二次到第n-1次3.第n次&#xff08;成功&#xff09;三、DataGrap连接Phoenix总结前言 最近在Phoenix中批量建表&#xff0c;结果发现所有的表都建错了&#xff0c;想着直接删库&#xff0c;重新建库&#xff0c;然…

Android启动流程1

Android启动流程1.Android架构介绍 Android的架构可以从架构图得知&#xff0c;主要分四层&#xff1a; Android经典的四层架构图 Android架构图 每一层的作用不做介绍&#xff0c;这里主要讲涉及的镜像有boot.img、system.img、vendor.img、recovery.img、userdata.img、cac…

问题处理:横竖屏切换时页面显示异常

横竖屏切换时页面显示异常问题现象分析发现问题解决问题问题现象 版本&#xff1a;android P Docker现象&#xff1a;运行王者荣耀游戏&#xff0c;在付款页面返回游戏页面时&#xff0c;发生竖屏到横屏的切换&#xff0c;游戏页面显示不正常&#xff0c;仅显示半个页面&…