SonarQube:CentOS7 使用 Docker 安装 SonarQube 后,集成 MySQL 和 Sonar-Scanner
目录导航MySQL:CentOS7 使用 Docker 安装 MySQL部署 MySQL启动 Sonar安装 Sonar-ScannerMySQL:CentOS7 使用 Docker 安装 MySQL简介: 为Sonar搭建一个数据库。本文参考: http://www.cnblogs.com/freestudy/articles/10277783.html环境:CentOS Lin...
目录导航
SonarQube:CentOS7 使用 Docker 安装 SonarQube 后,集成 MySQL 和 Sonar-Scanner
简介:
-
部署数据库: 可以将 Sonar 的配置信息的导入数据库,便于以后的调用。
-
挂载目录: 是为了将 Sonar 的扫描分析导出备份。
不挂载目录,Sonar 容器死掉后,扫描分析也将消失。
本文参考: https://blog.csdn.net/liudong9109/article/details/88897559 (条理清晰)
http://www.cnblogs.com/freestudy/articles/10277783.html (排版差、错误多)
环境:
-
CentOS Linux release 7.6.1810 (Core)
-
Docker version 18.09.3, build 774a1f4
-
Jenkins 2.177 (2019-05-12)
创建时间:2019/5/26 15:51:31
创建人:于子源
修改记录:修改人+修改时间+修改说明(多人修改时,增加多条)
当前版本:version 1.0.0
部署 MySQL
-
下载 MySQL5.7 镜像
docker pull mysql:5.7
-
启动 MySQL:
docker run \ -d \ -p 3307:3306 \ --name mysql \ -v /data/mysql/conf:/etc/mysql/conf.d \ -v /data/mysql/logs:/logs \ -v /data/mysql/data:/var/lib/mysql \ -e MYSQL_ROOT_PASSWORD=123456 \ mysql:5.7
-
-d : 后台运行容器,并返回容器 ID
-
-p 3307:3306 : 将容器的 3307 端口映射到主机的 3306 端口
-
–name mysql : 命名为 mysql
-
-v /data/mysql/conf:/etc/mysql/conf.d : 将本机 /data/mysql/conf/my.cnf 挂载到容器的 /etc/mysql/my.cnf
-
-v /data/mysql/logs:/logs : 将本机 /data/mysql/logs 目录挂载到容器的 /logs
-
-v /data/mysql/data:/var/lib/mysql : 将本机 /data/mysql/data 目录挂载到容器的 /var/lib/mysql
-
-e MYSQL_ROOT_PASSWORD=123456 : 初始化 root 用户,密码设置为 123456
-
mysql:5.7 :基于镜像的版本为 MySQL:5.7
-
-
进入 MySQL 容器:mysql
docker exec -it mysql bash
-
登录 MySQL
mysql -u root -p
输入密码:
123456
-
创建 Sonar 数据库
create database sonar;
-
添加远程登录用户:sonar ,并授予权限。
CREATE USER 'sonar'@'%' IDENTIFIED WITH mysql_native_password BY 'sonar';
GRANT ALL PRIVILEGES ON *.* TO 'sonar'@'%';
-
退出 MySQL
exit
-
-
退出 MySQL 容器:mysql
exit
启动 Sonar
-
在 /data 目录下创建 sonarqube/
mkdir /data/sonarqube
-
创建一个简单的 sonarqube 容器,目的是:取出里面的配置文件。为之后创建 sonarqube 时,可以挂载目录。
docker run -d --name sonartest sonarqube:7.4-community
-
进入容器(a0 是容器 ID)
docker exec -it a0 bash
-
使用 scp 命令,将重要文件复制到本机的 /data/sonarqube/ 下
scp -r conf/ data/ extensions/ logs/ root@10.9.40.121:/data/sonarqube
命令解释: 将 conf/ data/ extensions/ logs/ 复制到 /data/sonarqube 目录下
scp 是 SSH cp。用户为 root,主机号为 10.9.40.121。
输入
yes
,输入 root 的密码
-
退出并删除容器
exit
docker stop a0
docker rm a0
-
递归修改文件夹权限
chmod -R 777 /data/sonarqube/
-
启动 Sonar
下述代码在使用的时候,记得修改 IP。
启动命令:
docker run \ -d \ --name sonarqube \ -p 9000:9000 \ -p 9092:9092 \ --link=mysql:mysql \ -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 \ -e SONARQUBE_JDBC_USERNAME=sonar \ -e SONARQUBE_JDBC_PASSWORD=sonar \ -e SONARQUBE_JDBC_URL="jdbc:mysql://10.9.40.121:3307/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=false" \ sonarqube:7.4-community
参数介绍:
-
-d : 后台运行容器,并返回容器 ID
-
–name sonarqube : 命名为 sonarqube
-
-p 9000:9000 : 将本机的 9000 端口,映射到容器的 9000 端口
-
-p 9092:9092 : 将本机的 9002 端口,映射到容器的 9002 端口
-
–link=mysql:mysql : 是指和 mysql 容器连接通讯
-
-v /data/sonarqube/logs:/opt/sonarqube/logs : 将本机 /data/sonarqube/logs 挂载到容器的 /opt/sonarqube/logs
-
-v /data/sonarqube/conf:/opt/sonarqube/conf : 将本机 /data/sonarqube/conf 挂载到容器的 /opt/sonarqube/conf
-
-v /data/sonarqube/data:/opt/sonarqube/data : 将本机 /data/sonarqube/data 挂载到容器的 /opt/sonarqube/data
-
-v /data/sonarqube/extensions:/opt/sonarqube/extensions : 将本机 /data/sonarqube/extensions 挂载到容器的 /opt/sonarqube/extensions
-
-e SONARQUBE_JDBC_USERNAME=sonar : Sonar 使用 sonar 用户连接 MySQL
-
-e SONARQUBE_JDBC_PASSWORD=sonar : MySQL 中 sonar 用户的密码
-
-e SONARQUBE_JDBC_URL=“jdbc:mysql://10.9.40.121:3307/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=false” : MySQL 的 URL
-
sonarqube:7.4-community :基于镜像的版本为 sonarqube:7.4-community
-
-
启动 Sonar 可能要持续 4min,可以通过查看 logs 日志和正在运行的容器,来判断容器是否启动成功。
docker logs c
这里的 c 是容器 IDdocker ps -a
部署 Sonar-Scanner
-
下载
wget https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-3.3.0.1492-linux.zip
-
解压
unzip sonar-scanner-cli-3.3.0.1492-linux.zip
-
移到标准位置
mv sonar-scanner-3.3.0.1492-linux/ /usr/local/
-
修改配置文件
文件目录:/usr/local/sonar-scanner-3.3.0.1492-linux/conf
vi /usr/local/sonar-scanner-3.3.0.1492-linux/conf/sonar-scanner.properties
在最后面,写入以下内容:(注意:下述代码有两个需要改 IP 的地方。)
#----- Default SonarQube server sonar.host.url=http://10.9.40.121:9000 #----- Default source code encoding sonar.sourceEncoding=UTF-8 #----- 数据库用户名 sonar.jdbc.username=sonar #----- 数据库密码 sonar.jdbc.password=sonar #----- 数据库连接地址 sonar.jdbc.url=jdbc:mysql://10.9.40.121:3307/sonar?useUnicode=true&characterEncoding=utf8 #----- Sonar 用户名 sonar.login=admin #----- Sonar 密码 sonar.password=admin
下面这段代码是我从其他资料上找到的,暂时还不知具体功能是什么,写在这里,日后明白了再来说明。
sonar.jdbc.url=jdbc:mysql://10.9.40.121:3307/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=false
-
修改环境变量
vi /etc/profile
在末尾环境变量处增加以下内容:
export SONAR_SCANNER_HOME=/usr/local/sonar-scanner-3.3.0.1492-linux export PATH=$SONAR_SCANNER_HOME/bin:$PATH
-
运行代码扫描
找一个测试代码,121上没有啥代码,我找到 /home/yzy/javaProject01/ 下,执行下面的代码:
mvn sonar:sonar
这一步要下载很多文件,耐心等待。10 ~ 20 分钟都是正常的。直至出现下图,扫描完成。
-
进入 SonarQube 查看扫描结果
更多推荐
所有评论(0)