SonarQube:CentOS7 使用 Docker 安装 SonarQube 后,集成 MySQL 和 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

  1. 下载 MySQL5.7 镜像

    docker pull mysql:5.7

  2. 启动 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

  3. 进入 MySQL 容器:mysql

    docker exec -it mysql bash

    1. 登录 MySQL

      mysql -u root -p

      输入密码:123456

    2. 创建 Sonar 数据库

      create database sonar;

    3. 添加远程登录用户:sonar ,并授予权限。

      CREATE USER 'sonar'@'%' IDENTIFIED WITH mysql_native_password BY 'sonar';

      GRANT ALL PRIVILEGES ON *.* TO 'sonar'@'%';

    4. 退出 MySQL

      exit

  4. 退出 MySQL 容器:mysql

    exit

启动 Sonar

  1. 在 /data 目录下创建 sonarqube/

    mkdir /data/sonarqube

  2. 创建一个简单的 sonarqube 容器,目的是:取出里面的配置文件。为之后创建 sonarqube 时,可以挂载目录。

    docker run -d --name sonartest sonarqube:7.4-community

  3. 进入容器(a0 是容器 ID)

    docker exec -it a0 bash

  4. 使用 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 的密码

  5. 退出并删除容器

    exit

    docker stop a0

    docker rm a0

  6. 递归修改文件夹权限

    chmod -R 777 /data/sonarqube/

  7. 启动 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

  8. 启动 Sonar 可能要持续 4min,可以通过查看 logs 日志和正在运行的容器,来判断容器是否启动成功。

    docker logs c 这里的 c 是容器 ID

    在这里插入图片描述

    docker ps -a

部署 Sonar-Scanner

  1. 下载

    wget https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-3.3.0.1492-linux.zip

  2. 解压

    unzip sonar-scanner-cli-3.3.0.1492-linux.zip

  3. 移到标准位置

    mv sonar-scanner-3.3.0.1492-linux/ /usr/local/

  4. 修改配置文件

    文件目录:/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

  5. 修改环境变量

    vi /etc/profile

    在末尾环境变量处增加以下内容:

     export SONAR_SCANNER_HOME=/usr/local/sonar-scanner-3.3.0.1492-linux
     export PATH=$SONAR_SCANNER_HOME/bin:$PATH
    
  6. 运行代码扫描

    找一个测试代码,121上没有啥代码,我找到 /home/yzy/javaProject01/ 下,执行下面的代码:

    mvn sonar:sonar

    这一步要下载很多文件,耐心等待。10 ~ 20 分钟都是正常的。直至出现下图,扫描完成。

    在这里插入图片描述

  7. 进入 SonarQube 查看扫描结果

    URL: http://10.9.40.121:9000
    在这里插入图片描述

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
### 回答1: 1. 首先,需要安装Docker。可以使用以下命令安装: ``` sudo yum install docker ``` 2. 安装完成后,启动Docker服务: ``` sudo systemctl start docker ``` 3. 搜索MySQL镜像: ``` sudo docker search mysql ``` 4. 选择需要的MySQL镜像,例如官方MySQL镜像: ``` sudo docker pull mysql ``` 5. 运行MySQL容器: ``` sudo docker run -d --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=your_password mysql ``` 其中,`your_password`为你设置的MySQL root用户密码。 6. 进入MySQL容器: ``` sudo docker exec -it mysql bash ``` 7. 进入MySQL: ``` mysql -u root -p ``` 输入密码后即可进入MySQL。 以上就是在CentOS 7上使用Docker安装MySQL的步骤。 ### 回答2: CentOS7是一种常用的Linux操作系统,在使用Docker安装MySQL之前,我们需要首先确保已经在CentOS7安装Docker。接下来,我们就可以使用Docker安装MySQL。 首先,我们需要拉取MySQL镜像,在终端中输入以下命令: ``` sudo docker pull mysql:latest ``` 这样我们就成功拉取了最新版本的MySQL镜像。接下来,我们可以使用下面的命令启动MySQL容器: ``` sudo docker run -d --name=mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=<password> mysql:latest ``` 其中,password是我们为MySQL设置的root用户的密码,可以按照需求进行修改。上面的命令中,我们指定了容器的名称为mysql,同时将容器的3306端口映射到主机的3306端口,从而能够进行远程连接,并通过环境变量来设置root用户的密码。 如果我们想要进入MySQL容器,可以使用以下命令: ``` sudo docker exec -it mysql bash ``` 以上命令中,我们指定了要进入的容器的名称为mysql,并通过bash进入容器的终端。 需要注意的是,使用Docker启动的MySQL容器存储数据的位置在容器内部,因此当我们删除容器后,MySQL的数据也会随之删除。如果我们需要保存MySQL的数据,建议将MySQL数据挂载到宿主机上,以确保数据的持久化。 总之,在CentOS7使用Docker安装MySQL,我们只需要简单的几个步骤就能够搭建出一个稳定可靠的MySQL服务器,方便我们进行开发和实验。 ### 回答3: 在CentOS 7上使用Docker安装MySQL非常简单,只需要遵循以下步骤: 1. 安装Docker使用命令"yum install docker"来安装Docker。 2. 下载MySQL镜像:使用命令"docker pull mysql"来下载MySQL的镜像文件。这个命令将从Docker Hub上下载最新版本的MySQL镜像。 3. 创建MySQL容器:使用以下命令创建MySQL容器: docker run --name=mysql -v /my/data/dir:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=password -d mysql 在上面的命令中,我们使用了以下标志来创建MySQL容器: - "--name": 用于指定容器名为"mysql"。 - "-v": 用于指定MySQL数据目录的位置。例如,我们可以将数据目录/my/data/dir映射到容器内的/var/lib/mysql目录。 - "-e": 用于指定MySQL的root口令。在上面的命令中,我们将其设置为"password",但您可以将其更改为您自己的密码。 - "-d": 用于在后台运行容器。 4. 连接到MySQL容器:使用以下命令连接到MySQL容器: docker exec -it mysql bash 在上面的命令中,我们使用了以下标志: - "exec": 指示我们要在容器内运行一个命令。 - "-it": 指定终端模式,以便我们可以与MySQL交互。 - "mysql": 是容器的名称。 一旦连接到MySQL容器,您可以运行"mysql -uroot -p"命令,以及类似于"create database dbname;"和"create user username identified by 'password'; grant all on dbname.* to username;"等命令来创建和管理数据库。 总之,使用Docker安装MySQL非常方便,但需要注意的是要使用最新的MySQL镜像,以获得安全性和最新的功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值