SonarQube:CentOS7 使用 Docker 安装 SonarQube 后,集成 MySQL 和 Sonar-Scanner

    xiaoxiao2022-06-25  210

    目录导航

    SonarQube:CentOS7 使用 Docker 安装 SonarQube 后,集成 MySQL 和 Sonar-Scanner部署 MySQL启动 Sonar部署 Sonar-Scanner

    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 是容器 ID

    docker 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 查看扫描结果

    URL: http://10.9.40.121:9000


    最新回复(0)