MacOS下通过docker安装和运行SonarQube

MacOS下通过docker安装和运行SonarQube

使用postgres数据库的傻瓜式搭建,并针对Mac M1芯片可能遇到的问题。面向突然需要通过SonarQube检查的前端工程师,后端可以直接使用SonarLint在编写代码时进行检查。vscode上并没有特别好的相关插件(eslint一把梭了)

准备工作:

  1. 我们将要用到docker。你可能需要一个docker desktop,如果你熟悉docker的命令行操作,则可以忽略。
  2. 我们将要用到homebrew。你永远可以相信tuna的文档:homebrew的安装和换源:tuna官方文档。而使用m1芯片mac的用户,请不要错过少数派的这篇文章在 M1 芯片 Mac 上使用 Homebrew

本文参考博客园:Docker下,搭建SonarQube环境,在macOS 12.3.1下搭建,

1 Docker

Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低 (是的,可以通过docker在mac上玩游戏)。

docker的三个基本概念:

  • 镜像(Image):Docker 镜像(Image),就相当于是一个 root 文件系统。比如官方镜像 ubuntu:16.04 就包含了完整的一套 Ubuntu16.04 最小系统的 root 文件系统。
  • 容器(Container):镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。
  • 仓库(Repository):仓库可看成一个代码控制中心,用来保存镜像。

如果此前没有安装过docker,直接通过官网下载docker app即可,它会同时帮你自动下载并配置到docker的命令行工具。

2 安装并运行数据库

网上教程也有使用MySQL等数据库的,此处按照本文所参考的教程,使用postgreSQL数据库:世界上最先进的开源关系型数据库

  1. 拉取postgres镜像。进入终端,输入命令:

    1
    docker pull postgres
  2. 运行镜像容器

    1
    docker run --name db -e POSTGRES_USER=sonar -e POSTGRES_PASSWORD=sonar -d postgres
    • --name: 容器名称,此处取名为db

    • -e:使用值docker将名称为POSTGRES_PASSWORDPOSTGRES_USER的环境变量暴露给容器。

      • POSTGRES_PASSWORD为PostgreSQL的超级用户密码

      • POSTGRES_USER设置超级用户名。如果未提供,则超级用户名默认为postgres。

      • POSTGRES_DB设置要设置的默认数据库的名称。如果未提供,则默认为POSTGRES_USER的值。

        此处设置的为:数据库名为sonar,超级用户名为sonar,密码为sonar.

    • -d: 后台运行容器,并返回容器ID

      完成后,docker desktop的containers下出现名为db的容器,且正在运行。

      创建数据库镜像容器

3 安装并运行SonarQube

  1. 下载并安装SonarQube镜像,我们有以下途径

    • SonarQube官网下载,导入docker;

    • 直接docker拉取docker pull sonarqube

      但是因为我们使用m1芯片为arm64架构,这两种方法下载并运行的镜像可能会遇到问题,因此,我们换用以下解决方案

    • 拉取SonarQube源码,自行编译为镜像并使用

      1
      2
      3
      4
      5
      # download 下载,也可通过官网下载
      git clone https://github.com/SonarSource/docker-sonarqube
      cd docker-sonarqube/9/community
      #build
      docker build -t sonarqube-arm .
    • 直接docker拉取社区已编译好的arm-sonarqube

      1. 使用docker search sonarqube-arm搜索别人上传的arm-sonarqube
      2. 挑选一个并拉取,我使用的是docker pull koolwithk/sonarqube-arm
  2. 启动sonar,并连接到数据库

    1
    docker run --name sonar --link db -e SONARQUBE_JDBC_URL=jdbc:postgresql://db:5432/sonar -e SONARQUBE_JDBC_USERNAME=sonar -e SONARQUBE_JDBC_PASSWORD=sonar -p 9000:9000 -d sonarqube
    • --name:容器名称,此处取名为sonar

    • --link 容器名称:与其它容器通信,此处为与名为db的容器,即postgres的数据库

    • -e:环境变量

      添加了SONARQUBE_JDBC_URL环境变量为 jdbc:postgresql://容器名称:端口/数据库名称 (数据库连接驱动)

      添加了SONARQUBE_JDBC_USERNAME环境变量为sonar(数据库连接用户名)

      添加了SONARQUBE_JDBC_PASSWORD环境变量为sonar(数据库连接密码)

    • -p: 指定端口映射,格式为:主机(宿主)端口:容器端口

    • -d:镜像名称,此处我们需要把sonarqube替换为我们所拉取的arm-sonarqube对应的名称或IMAGE ID。使用docker image ls命令可以查看到。

      img

  3. 在docker desktop中查看

    运行效果

  4. 在浏览器中,访问http://localhost:9000,默认用户名admin,密码admin(对于SonarQube9)

  5. 新建项目,根据需要选择云端导入或manually手动(本地项目选择手动)。

    新建项目

    输入项目名和项目钥,随意。

    输入你自己的token并生成,点击继续后输入项目的信息,sonar将返回给你一串sonar-scanner命令。复制。

    运行

4 安装sonar-scanner并运行扫描

通过brew install sonar-scanner即可

进入我们本地需要sonar扫描的项目文件夹,在终端输入步骤3中所复制的命令,等待片刻。即可在http://localhost:9000的项目中查看到自己项目的扫描结果。sonar提示的bug一般是是eslint忽略的js文件中,耐心,我们将会解决得很快。祝好运!

title:MacOS下通过docker安装和运行SonarQube

author:Anne416wu

link:https://www.annewqx.top/posts/40079/

publish time:2022-04-22

update time:2022-07-20


评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×