Docker部署sonarqube(代码检测平台)

Docker部署sonarqube(代码检测平台)

Scroll Down

简介

Sonar是一个用于代码质量管理的开源平台,用于管理Java源代码的质量。通过插件机制,Sonar 可以集成不同的测试工具,代码分析工具,以及持续集成工具,比如pmd-cpd、checkstyle、findbugs、Jenkins。通过不同的插件对这些结果进行再加工处理,通过量化的方式度量代码质量的变化,从而可以方便地对不同规模和种类的工程进行代码质量管理。同时 Sonar 还对大量的持续集成工具提供了接口支持,可以很方便地在持续集成中使用 Sonar。 此外,Sonar 的插件还可以对 Java 以外的其他编程语言提供支持,对国际化以及报告文档化也有良好的支持

工作原理

SonarQube 并不是简单地将各种质量检测工具的结果(例如 FindBugs,PMD 等)直接展现给客户,而是通过不同的插件算法来对这些结果进行再加工,最终以量化的方式来衡量代码质量,从而方便地对不同规模和种类的工程进行相应的代码质量管理。 SonarQube 在进行代码质量管理时,会从图 1 所示的七个纬度来分析项目的质量
sonar1.png

[root@cnpmjs sonarqube]# vim docker-compose.yaml
version: '3'
services:
  postgres:
    image: postgres:9.6.15
    container_name: sonar_postgres
    ports:
      - 5432:5432
    volumes:
      - /opt/sonarqube/postgresql:/var/lib/postgresql
    environment:
      TZ: Asia/Shanghai
      POSTGRES_USER: sonar
      POSTGRES_PASSWORD: sonar@123
    networks:
      - sonarnet
    logging:
      driver: "json-file"
      options:
        max-size: "200k"
        max-file: "10"

  sonar:
    image: sonarqube:7.9.1-community
    container_name: sonar
    depends_on: 
      - postgres
    volumes:
      - /opt/sonarqube/extensions:/opt/sonarqube/extensions
      - /opt/sonarqube/logs:/opt/sonarqube/logs
      - /opt/sonarqube/data:/opt/sonarqube/data
      - /opt/sonarqube/conf:/opt/sonarqube/conf
    ports:
      - 9000:9000
    environment:
      TZ: Asia/Shanghai
      SONARQUBE_JDBC_USERNAME: sonar
      SONARQUBE_JDBC_PASSWORD: sonar@123
      SONARQUBE_JDBC_URL: jdbc:postgresql://postgres:5432/sonar
    networks:
      - sonarnet
    logging:
      driver: "json-file"
      options:
        max-size: "200k"
        max-file: "10"
networks:
  sonarnet:
    driver: bridge
[root@cnpmjs sonarqube]# docker-compose up -d
[root@cnpmjs sonarqube]# docker ps|grep sonarqube
97be3b428d1f        sonarqube:7.9.1-community                             "./bin/run.sh"           2 months ago        Up 2 months            0.0.0.0:9000->9000/tcp                                         sonar
[root@cnpmjs sonarqube]# docker ps|grep postgres
e77a94b37b41        postgres:9.6.15                                       "docker-entrypoint.s…"   2 months ago        Up 2 months            0.0.0.0:5432->5432/tcp                                         sonar_postgres