Docker部署SonarQube

该博客主要介绍了Sonar的部署方法,包括服务端和Windows客户端的部署。服务端部署提供了docker和zip两种方式,zip部署需下载SonarQube和JDK11,安装配置JDK,创建非root用户等;客户端部署则需下载客户端、配置环境变量、创建项目获取token等。

 

1、服务端部署(docker)

1.1、docker部署(sonarqube:8.6-community为例)

[root@localhost home]# docker pull sonarqube:8.6-community
8.6-community: Pulling from library/sonarqube
0a6724ff3fcd: Pull complete 
eb833291b55c: Pull complete 
2a91bfbe66cb: Pull complete 
db9c21026d71: Pull complete 
ddac7b0d6339: Pull complete 
Digest: sha256:6716837a86ab991205a7579b1630fb087c64624835c7f78aa233b6e1bf305082
Status: Downloaded newer image for sonarqube:8.6-community
docker.io/library/sonarqube:8.6-community
[root@localhost home]# docker run -d --name sonarqube -e SONAR_ES_BOOTSTRAP_CHECKS_DISABLE=true -p 9000:9000 sonarqube:8.6-community
5c59adcb9703647b7c2afc6a9e37954202a3306d132b1dee69a3f03331da02e7

1.2、zip部署(sonarqube-8.6.0.39681.zip为例)

1.2.1、下载sonarqube:https://www.sonarqube.org/downloads/

1.2.2、下载JDK11:https://www.oracle.com/java/technologies/javase-downloads.html

1.2.3、安装JDK11,解压,配置环境变量。

[root@localhost home]# tar -zxvf jdk-11.0.9_linux-x64_bin.tar.gz
[root@localhost home]# mv jdk-11.0.9 /usr/local
[root@localhost local]# vi /etc/profile
export JAVA_HOME=/usr/local/jdk-11.0.9
export PATH=$JAVA_HOME/bin:$PATH
[root@localhost local]# source /etc/profile

1.2.4、创建一个非root用户

useradd username  创建用户username
passwd user_pwd    给已创建的用户username设置密码
su username         切换到新用户

1.2.5、解压启动,并授权给新用户

[root@localhost home]# chown -R usernamesonarqube

# On Windows, execute:
C:\sonarqube\bin\windows-x86-64\StartSonar.bat

# On other operating systems, as a non-root user execute:
# ./sonar.sh { console | start | stop | force-stop | restart | status | dump }
/opt/sonarqube/bin/[OS]/sonar.sh console

2、客户端部署(Windows客户端)

2.1、下载客户端

http://IP:9000/documentation/analysis/scan/sonarscanner/

2.2、配置环境变量

D:\sonar-scanner-4.5.0.2216-windows\bin

2.3、创建项目,获取token

2.4、修改配置

#Configure here general information about the environment, such as SonarQube server connection details for example
#No information about specific project should appear here

#----- Default SonarQube server
sonar.host.url=http://IP:9000

#----- Default source code encoding
sonar.sourceEncoding=UTF-8

# your authentication token
sonar.login=admin
sonar.password=admin

2.5、启动

进入项目目录下,执行命令

sonar-scanner.bat -D"sonar.projectKey=trivy" -D"sonar.projectName=trivy" -D"sonar.projectVersion=1.0" -D"sonar.sources=D:/CODE/trivy-main" 

### 使用Docker部署SonarQube #### 准备工作 为了确保顺利部署SonarQube,需确认已安装Docker。如果尚未安装,请前往[Docker官网](https://www.docker.com/)下载适合操作系统的版本并完成安装过程[^3]。 #### 调整系统参数 对于某些操作系统(如CentOS),可能需要调整内核参数来满足Elasticsearch的要求,因为默认情况下这些设置不足以支持生产模式下的正常运作。具体来说: - 设置最大内存映射数 `sysctl -w vm.max_map_count=524288` - 增加文件句柄的最大数量 `sysctl -w fs.file-max=131072` 和每进程打开文件的数量限制 `ulimit -n 131072` - 提升用户进程数目上限 `ulimit -u 8192` 以上命令可以在终端中逐条输入执行,或者编辑相应的配置文件使更改永久生效[^5]。 #### 获取SonarQube镜像 利用Docker Hub上的官方仓库获取最新的SonarQube镜像: ```bash docker pull sonarqube:latest ``` 这一步会从互联网下载最新版的SonarQube镜像至本地机器上,供后续创建容器时使用[^1]。 #### 启动SonarQube容器 一旦获得了所需的镜像,就可以通过下面这条指令启动一个新的SonarQube实例: ```bash docker run -d --name sonarqube -p 9000:9000 sonarqube:latest ``` 这里定义了一个名为sonarqube的服务,并将其内部监听端口9000映射到了主机相同的端口号上,使得外部可以直接访问该应用界面。 #### 进阶配置——持久化存储与网络优化 考虑到数据安全性和性能因素,在实际环境中通常建议采用挂载卷的方式保存数据库和其他重要资料;另外也可以考虑构建自定义网络以增强不同服务间的通信效率。例如: ```bash docker volume create sonarqube_data docker network create sonarnet docker run -d \ --name sonarqube \ -v sonarqube_data:/opt/sonarqube/data \ --network sonarnet \ -p 9000:9000 \ sonarqube:latest ``` 此脚本不仅实现了上述提到的功能改进,还进一步增强了整体解决方案的灵活性和可靠性[^2]。 #### 自动化集成示例 当希望将SonarQube融入CI/CD流水线时,比如结合Jenkins来进行持续集成,则可以通过编写shell脚本来简化这一过程。以下是一个简单的例子,展示了如何调用SonarScanner插件对项目源码实施静态分析并将结果上传给远程服务器中的SonarQube实例[^4]: ```groovy pipeline { agent any stages { stage('Build') { ... } stage('Test') { ... } stage('Analyze with SonarQube'){ steps{ sh ''' mvn clean verify sonar:sonar \ -Dsonar.host.url=http://${SONAR_HOST} \ -Dsonar.login=${SONAR_TOKEN} ''' } } } post{...} } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值