Sonar Qube是一个开源的代码分析平台,支持Java、Python、PHP、JavaScript、CSS等25种以上的语言,可以检测出重复代码、代码漏洞、代码规范和安全性漏洞的问题。
Sonar Qube可以与多种软件整合进行代码扫描,比如Maven,Gradle,Git,Jenkins等,并且会将代码检测结果推送回Sonar Qube并且在系统提供的UI界面上显示出来
采用docker-compose的方式安装
ymlversion: "3.1" # 声明使用的Docker Compose语法版本
services: # 定义容器服务列表
db: # 服务1:PostgreSQL数据库容器
image: postgres # 使用官方PostgreSQL镜像
container_name: db # 显式指定容器名称(而非自动生成)
ports:
- 5432:5432 # 将容器内5432端口映射到宿主机同端口
networks:
- sonarnet # 连接到自定义网络
environment: # 设置环境变量(数据库配置)
POSTGRES_USER: sonar # 创建默认用户名为sonar
POSTGRES_PASSWORD: sonar # 设置用户密码为sonar
sonarqube: # 服务2:SonarQube代码质量分析平台
image: sonarqube:8.9.6-community # 指定SonarQube社区版8.9.3镜像
container_name: sonarqube # 显式命名容器
depends_on: # 声明依赖关系(先启动db服务)
- db
ports:
- "9000:9000" # 暴露Web管理界面端口
networks:
- sonarnet # 使用同一自定义网络
environment: # SonarQube连接数据库的配置
SONAR_JDBC_URL: jdbc:postgresql://db:5432/sonar # 通过服务名db访问PostgreSQL
SONAR_JDBC_USERNAME: sonar # 使用db服务中定义的用户名
SONAR_JDBC_PASSWORD: sonar # 使用db服务中定义的密码
networks: # 自定义网络配置
sonarnet: # 网络名称
driver: bridge # 使用桥接模式(默认网络驱动)
js双容器架构
PostgreSQL容器作为SonarQube的专用数据库
SonarQube容器提供代码扫描的Web服务
网络隔离
通过sonarnet自定义网络实现:
容器间可通过服务名直接通信(如jdbc:postgresql://db:5432)
与外部网络隔离增强安全性
关键配置
数据库认证信息通过环境变量动态注入
端口映射使宿主机可访问:
9000:SonarQube管理界面
5432:可选暴露数据库端口(生产环境建议移除)
版本控制
明确指定SonarQube版本(8.9.6社区版)
使用稳定的PostgreSQL官方镜像
启动命令建议:docker-compose up -d
访问地址:http://localhost:9000(首次启动需等待约2分钟初始化)
本文作者:松轩(^U^)
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!