1、使用Docker安装,docker-compose.yaml

version: "3"

services:
  sonarqube:
    image: sonarqube:community
    depends_on:
      - db
    environment:
      SONAR_JDBC_URL: jdbc:postgresql://db:5432/sonar
      SONAR_JDBC_USERNAME: sonar
      SONAR_JDBC_PASSWORD: sonar
    volumes:
      - sonarqube_data:/opt/sonarqube/data
      - sonarqube_extensions:/opt/sonarqube/extensions
      - sonarqube_logs:/opt/sonarqube/logs
    ports:
      - "9000:9000"
    networks:
      network-01:
        aliases:
          - sonarqube-net1
  db:
    image: postgres:12
    environment:
      POSTGRES_USER: sonar
      POSTGRES_PASSWORD: sonar
    volumes:
      - postgresql:/var/lib/postgresql
      - postgresql_data:/var/lib/postgresql/data
    networks:
      network-01:
        aliases:
          - postgres-net1

volumes:
  sonarqube_data:
  sonarqube_extensions:
  sonarqube_logs:
  postgresql:
  postgresql_data:

networks:
  network-01:
    driver: bridge
    name: network-01

2、通过 9000 端口登录web后台

3、通过容器扫描

docker run \
    --rm \
    --network network-01 \
    -e SONAR_HOST_URL="扫描服务器服务" \
    -e SONAR_LOGIN="令牌" \
    -v "项目路径:/usr/src" \
    sonarsource/sonar-scanner-cli -Dsonar.projectKey=项目标识 -Dsonar.exclusions=排除目录1,排除目录2

3.1 扫描参数说明

#1、network-01:可选,两个容器共用的网络,须与第1步创建的容器服务一致,保证扫描容器能访问第一容器
#2、扫描服务器服务:第1步创建的容器服务,如:http://192.168.1.2:9000
#3、令牌:后台新建项目时创建的令牌
#4、项目路径:扫描的目录,如:/etc/nginx/html/project1
#5、-Dsonar.projectKey:必须,后台新建项目时的项目标识
#6、-Dsonar.exclusions:可选,排除的目录,该目录不扫描,多个目录用英文逗号(,)隔开