docker代码检测工具SonarQube

154 阅读2分钟

一:下载镜像

    docker pull postgres:13
    docker pull sonarqube:lts

二:编写docker-compose.yml启动脚本

# 指定 Docker Compose 文件格式版本
version: "3.8"

# 定义服务列表
services:
  # SonarQube 服务配置
  sonarqube:
    # 使用 SonarQube 长期支持版本镜像
    image: sonarqube:lts
    # 指定容器名称
    container_name: sonarqube
    # 声明依赖关系,确保数据库服务先启动
    depends_on:
      - sonarqube-db
    # 环境变量配置
    environment:
      # PostgreSQL 数据库连接 URL
      - SONAR_JDBC_URL=jdbc:postgresql://sonarqube-db:5432/sonar
      # 数据库用户名
      - SONAR_JDBC_USERNAME=sonar
      # 数据库密码
      - SONAR_JDBC_PASSWORD=sonar
      # 禁用 Elasticsearch 启动时的引导检查
      - SONAR_ES_BOOTSTRAP_CHECKS_DISABLE=true
    # 数据卷映射
    volumes:
      # 持久化 SonarQube 数据目录
      - ./sonarqube/data:/opt/sonarqube/data
      # 持久化 SonarQube 插件目录
      - ./sonarqube/extensions:/opt/sonarqube/extensions
      # 持久化 SonarQube 日志目录
      - ./sonarqube/logs:/opt/sonarqube/logs
    # 端口映射,将容器的 9000 端口映射到主机的 9000 端口
    ports:
      - "9000:9000"
    # 将服务加入自定义网络
    networks:
      - sonarnet
    # 容器重启策略:除非手动停止,否则总是重启
    restart: unless-stopped

  # PostgreSQL 数据库服务配置
  sonarqube-db:
    # 使用 PostgreSQL 13 版本镜像
    image: postgres:13
    # 指定容器名称
    container_name: sonarqube-db
    # 环境变量配置
    environment:
      # PostgreSQL 用户名
      - POSTGRES_USER=sonar
      # PostgreSQL 密码
      - POSTGRES_PASSWORD=sonar
      # PostgreSQL 数据库名
      - POSTGRES_DB=sonar
    # 数据卷映射,持久化数据库数据
    volumes:
      - sonarqube_db:/var/lib/postgresql/data
    # 将服务加入自定义网络
    networks:
      - sonarnet
    # 容器重启策略:除非手动停止,否则总是重启
    restart: unless-stopped

# 网络配置
networks:
  # 定义名为 sonarnet 的网络
  sonarnet:
    # 使用 bridge 驱动,创建桥接网络
    driver: bridge

# 数据卷配置
volumes:
  # SonarQube 数据卷
  sonarqube_data:
  # SonarQube 插件数据卷
  sonarqube_extensions:
  # SonarQube 日志数据卷
  sonarqube_logs:
  # PostgreSQL 数据库数据卷
  sonarqube_db:

三:启动

docker-compose up -d

四: 赋权限

chmod -R 777 ./sonarqube

五:重启

docker-compose down -v && docker-compose up -d

六:进入页面 localhost:9000

用户名admin密码admin

七:下载中文插件

image.png

八:使用

image.png

image.png

image.png

image.png

mvn -X sonar:sonar -Dsonar.host.url=http://xxxxx:9000 -Dsonar.projectKey=java -Dsonar.login=squ_9e45863dac698a0139fc9fd127dfd17b10b1ffe0

 X:是打印详细日志,第一次执行的时候带上方便看日志,没有问题在删掉就ok了
 Dsonar.host.url:sonar服务器地址
 Dsonar.projectKey: 项目唯一标志,不同项目用不同的key
 Dsonar.login:token值,登录验证用的

image.png