Docker运行SonarQube核心是服务可运行、数据可持久、扫描可接入、看板可访问;选用社区版镜像,搭配外挂PostgreSQL数据库,挂载目录确保权限正确,通过sonar-scanner-cli容器执行扫描,登录http://localhost:9000查看四大质量面板。

用 Docker 运行 SonarQube 实现代码静态质量看板,核心是“服务可运行 + 数据可持久 + 扫描可接入 + 看板可访问”。不需要从零编译或配置 Java 环境,Docker 把底层复杂度封装好了,重点在选对镜像、连对数据库、挂对目录、扫进代码。
选版本:社区版够用,企业版才支持 C/C++
大多数团队起步用 社区版(sonarqube:latest 或 sonarqube:10.5-community)完全满足需求:Java/Python/JS/Go 的 Bug、漏洞、重复率、覆盖率等核心指标全支持,界面清爽,权限基础但够用。只有明确需要 C/C++ 深度分析(如 MISRA 合规、内存泄漏路径追踪),才需上企业版——但企业版镜像不公开提供,需自行获取并注意合规风险。
搭环境:PostgreSQL 是推荐数据库,必须外挂
官方已弃用 H2 内存数据库,生产级部署必须配独立数据库。PostgreSQL 是首选,比 MySQL 更稳定、兼容性更好:
- 启动 PostgreSQL 容器时,固定数据库名、用户和密码,并映射数据卷防止重启丢数据
- 启动 SonarQube 容器时,通过
SONARQUBE_JDBC_URL显式指向 PostgreSQL,不能依赖默认嵌入库 - 宿主机目录权限要设为
777或由sonarqube用户可写(如 chown 999:999),否则容器启动失败报 “Permission denied”
跑扫描:用 sonar-scanner-cli 容器轻量接入项目
不用在每台开发机装 scanner,直接用官方 sonarsource/sonar-scanner-cli 镜像执行扫描:
- 项目根目录放
sonar-project.properties,填好sonar.host.url(如 http://host-ip:9000)、sonar.login(Token 或 admin 密码)、sonar.projectKey(唯一标识,建议用 repo 名) - 执行命令:
docker run --rm -v $(pwd):/usr/src sonarsource/sonar-scanner-cli - 首次扫描会慢(要下载插件、解析语法树),后续增量快;成功后刷新网页,项目自动出现在仪表盘
看效果:登录 Web 界面,关注四大核心面板
浏览器打开 http://localhost:9000(首次默认账号 admin/admin):
- Overview:项目总览页,显示质量门禁状态(Passed/Failed)、技术债天数、漏洞数、可靠性和安全性评级
- Code:点击文件可跳转源码,高亮标出 Bug 行、安全热点、重复块,支持展开上下文
- Measures:按维度查指标,比如 “Lines of Code”、“Cognitive Complexity”、“Unit Test Coverage”
- Activity:时间轴展示每次扫描结果变化,趋势图直观反映质量走势


















