SonarQube部署
程小虎2026-01-28 11:17:44
✨ 环境准备
📄 系统要求
- Docker、Docker-Compose 已安装并运行
- Maven 已安装(用于代码分析)
- 磁盘空间:至少
2GB可用空间 - 内存:建议
4GB以上
🛠️ SonarQube 部署步骤
安装过程中需要使用root用户进行安装,若系统当前用户为非root用户(必须是配置了sudo免密),则先执行下面命令切换为root用户
sudo su - root
执行下面命令,创建文件上传目录
mkdir /soft
将Docker安装包对应的文件夹 [ ],上传至/soft 路径下,若一开始登录的时非root用户,可以先上传到 /tmp 路径下,然后移动到 /soft 下
- sonarqube-7.8-community.tar:Sonar离线镜像包
- mysql-5.7.tar:MySQL离线镜像包(Sonar运行依赖MySQL)
- sonar-l10n-zh-plugin-1.28.jar:Sonar中文插件
- install_sonar.sh:一键安装脚本
[root@huge soft]# cd /soft/Sona
[root@huge Sona]# ll
总用量 1252576
-rw-r--r-- 1 root root 10224 1月 30 14:02 install_sonar.sh
-rw-r--r-- 1 root root 519596032 1月 30 14:02 mysql-5.7.tar
-rw-r--r-- 1 root root 47581 1月 30 14:02 sonar-l10n-zh-plugin-1.28.jar
-rw-r--r-- 1 root root 763025920 1月 30 14:02 sonarqube-7.8-community.tar
直接执行脚本即可安装
[root@huge Sona]# bash install_sonar.sh
导入Sonar离线镜像 [ sonarqube-7.8-community.tar ]
导入MySQL离线镜像 [ mysql-5.7.tar ]
创建Sonar配置文件
通过Docker-Compose启动Sonar
[+] Running 3/3
✔ Network sona_default Created 0.0s
✔ Container mysql5.7 Healthy 11.1s
✔ Container sonar Started 11.6s
恭喜!Sonar部署成功。请登录以下地址访问:
====================================
登录地址:192.168.80.12:9000
用户名:admin
密码:admin
====================================
🛠️SonarQube 初始配置
📄 访问 SonarQube
- 地址:
http://192.168.181.181:9090 - 默认账号:
admin - 默认密码:
admin
📄 首次登录后需要
- 按照提示修改默认密码
- 创建新项目或使用已有项目
📄 生成 Token(用于代码分析)
- 右上角点击用户头像 → My Account
- 选择 Security 标签页
- 输入 Token 名称(如:common-biz)
- 点击 Generate 生成 Token
- 保存生成的 Token:
fb87b77a8a66271dcb2e15b17dd2f3d8206aba11
📄 项目代码分析配置
📄 直接使用 Maven 命令
mvn sonar:sonar \
-Dsonar.projectKey=common-biz \
-Dsonar.host.url=http://192.168.181.181:9090 \
-Dsonar.login=fb87b77a8a66271dcb2e15b17dd2f3d8206aba11
📄 单行命令
mvn sonar:sonar -Dsonar.projectKey=common-biz -Dsonar.host.url=http://192.168.181.181:9090 -Dsonar.login=fb87b77a8a66271dcb2e15b17dd2f3d8206aba11
📄 在 Jenkins Pipeline 中使用
sh '''
mvn sonar:sonar \
-Dsonar.projectKey=common-biz \
-Dsonar.host.url=http://192.168.181.181:9090 \
-Dsonar.login=fb87b77a8a66271dcb2e15b17dd2f3d8206aba11
'''
📄 结合项目构建
sh '''
mvn --update-snapshots \
-Dmaven.test.skip=true \
clean package \
sonar:sonar \
-Dsonar.projectKey=common-biz \
-Dsonar.host.url=http://192.168.181.181:9090 \
-Dsonar.login=fb87b77a8a66271dcb2e15b17dd2f3d8206aba11
'''
📄 常见问题排查
📄 容器启动失败
# 查看容器日志
docker logs -f sonar
# 查看运行状态
docker ps -a | grep sonar
📄 数据库连接问题
- 确认 MySQL 容器运行正常:
docker ps | grep mysql - 确认网络连通性:
telnet 192.168.181.181 13306 - 检查数据库用户权限
📄 SonarQube 无法访问
- 检查防火墙设置:
firewall-cmd --list-ports - 确认端口映射:
docker port sonar - 查看服务日志:
tail -f /data/docker/sonarqube/logs/sonar.log
📄 代码分析失败
- 确认 Token 有效
- 检查项目密钥(projectKey)是否正确
- 确认 Maven 版本支持 SonarQube 插件
📄 维护命令
📄 重启服务
docker restart sonar
docker restart mysql5.7
📄 备份数据
# 备份 MySQL 数据
docker exec mysql5.7 mysqldump -uroot -pAdmin123... sonar > sonar_backup_$(date +%Y%m%d).sql
# 备份 SonarQube 配置文件
tar czf sonarqube_conf_backup_$(date +%Y%m%d).tar.gz /data/docker/sonarqube/conf
📄 查看资源使用
# 查看容器资源使用
docker stats sonar mysql5.7
# 查看磁盘空间
df -h /data
📄 注意事项
- 安全警告:本示例使用简单密码,生产环境请使用强密码
- 数据备份:定期备份数据库和配置文件
- 版本兼容:SonarQube 7.8 与特定版本的 MySQL 和 Java 兼容
- 性能考虑:SonarQube 对内存要求较高,大型项目建议增加内存分配
- 网络配置:确保 SonarQube 服务器可被构建节点访问
适用版本:SonarQube 7.8 Community Edition
参考文献:https://www.tcxurun.cn/2024/12/10/使用docker方式安装sonar-7-8-扫描jdk1-8项目/
