服务器SonarQube教程:Docker部署与代码扫描实操

服务器SonarQube教程:从零搭建代码扫描平台

SonarQube 是一套开源的代码质量分析平台,能检查代码缺陷、漏洞和重复率。
在服务器上部署 SonarQube,可以让团队在提交代码前自动发现潜在问题。
本文以 Linux 服务器和 Docker 为例,带零基础用户完成安装、配置与首次扫描。

部署前需要确认的几件事

  • 服务器配置:建议至少 2 核 CPU、4GB 内存。SonarQube 对内存敏感,2GB 以下容易启动失败。
  • 操作系统:常见 Linux 发行版均可,示例使用 Ubuntu 22.04,其他发行版命令需对应调整。
  • 已安装 Docker 和 Docker Compose:用 docker --version 和 docker compose version 检查,没有则先安装。
  • 开放端口:默认 Web 端口 9000,确保防火墙或安全组允许访问。
  • 数据库:生产环境建议使用 PostgreSQL,本教程用 Docker 同时启动 PostgreSQL 和 SonarQube。

用 Docker Compose 启动 SonarQube 与数据库

创建一个工作目录,例如 /opt/sonarqube,然后新建 docker-compose.yml:

version: "3"
services:
  db:
    image: postgres:15
    container_name: sonar-db
    environment:
      POSTGRES_USER: sonar
      POSTGRES_PASSWORD: sonar
      POSTGRES_DB: sonar
    volumes:
      - sonar_db:/var/lib/postgresql/data
    restart: always

  sonarqube:
    image: sonarqube:lts-community
    container_name: sonarqube
    depends_on:
      - db
    environment:
      SONAR_JDBC_URL: jdbc:postgresql://db:5432/sonar
      SONAR_JDBC_USERNAME: sonar
      SONAR_JDBC_PASSWORD: sonar
    ports:
      - "9000:9000"
    volumes:
      - sonar_data:/opt/sonarqube/data
      - sonar_extensions:/opt/sonarqube/extensions
      - sonar_logs:/opt/sonarqube/logs
    restart: always

volumes:
  sonar_db:
  sonar_data:
  sonar_extensions:
  sonar_logs:

执行启动命令:

docker compose up -d

查看日志确认启动成功:

docker compose logs -f sonarqube

当日志出现 SonarQube is operational 时,浏览器访问 http://服务器IP:9000,默认账号密码均为 admin,首次登录会要求修改密码。

安装中文插件与创建项目

登录后点击顶部 Administration → Marketplace,搜索 Chinese,找到中文语言包点击 Install,然后重启 SonarQube 容器:

docker compose restart sonarqube

重启后界面变为中文。
接着点击 创建项目 → 手动,输入项目标识和显示名称,生成一个令牌(Token),这个令牌只显示一次,务必复制保存。

在代码仓库中执行扫描

以 Maven 项目为例,在项目根目录执行:

mvn clean verify sonar:sonar \
  -Dsonar.projectKey=你的项目标识 \
  -Dsonar.host.url=http://服务器IP:9000 \
  -Dsonar.login=你生成的令牌

如果是前端项目,先安装 SonarScanner:

npm install -g sonarqube-scanner

然后在项目根目录创建 sonar-project.properties:

sonar.projectKey=你的项目标识
sonar.host.url=http://服务器IP:9000
sonar.login=你生成的令牌
sonar.sources=src

执行扫描:

sonar-scanner

扫描完成后,回到 SonarQube 网页即可看到代码质量报告。

常见报错与避坑说明

  • 启动后无法访问 9000 端口:检查服务器安全组和防火墙,Ubuntu 可执行 sudo ufw allow 9000。
  • 日志提示内存不足:在 docker-compose.yml 的 sonarqube 服务下增加 ulimits 或调整宿主机 vm.max_map_count:sudo sysctl -w vm.max_map_count=262144。
  • 数据库连接失败:确认 PostgreSQL 容器已就绪,SonarQube 启动时数据库未准备好会重试,若持续失败检查用户名密码是否一致。
  • 扫描时提示令牌无效:令牌只在创建时显示一次,丢失需重新生成。
  • 生产环境不要用默认密码:首次登录后立即修改 admin 密码,并避免将 9000 端口直接暴露到公网,建议通过 Nginx 反向代理并配置 HTTPS。

验证部署是否成功

  • 浏览器能正常打开 SonarQube 登录页,且界面为中文。
  • 执行一次扫描后,项目页面能看到代码行数、缺陷、漏洞等指标。
  • 重启服务器后,执行 docker compose ps 确认两个容器状态均为 Up。

如果扫描结果为空,检查 sonar.sources 路径是否指向实际代码目录。
按上述步骤操作后,你已拥有一套可用的服务器 SonarQube 代码扫描环境,后续可结合 CI 工具实现自动分析。

分享到:
上一篇
服务器Discuz教程:从环境准备到论坛安装的完整步骤
下一篇
服务器Zabbix教程:从零搭建监控系统与告警配置
1
系统公告

泽御云中秋国庆双节活动上线:新购8折,拼团3.99元起

尊敬的用户:
泽御云“月满中秋·礼贺国庆”双节活动现已开启,活动时间为2026年9月23日至10月10日。 活动期间可享以下福利:
1. 常规云服务器新购使用优惠码“泽御中秋国庆同乐”,符合条件的订单享8折优惠。
2. 香港精品云服务器5人拼团低至3.99元,部分4核4G套餐3人拼团年付388元,续费同价。
3. 新用户购买年付云服务器,符合活动规则可赠送2个月使用时长。
4. 老用户续费季度赠15天,续费年度赠2个月;活动期间升级配置免收配置迁移手续费。
5. 推荐好友成功下单,符合条件的推荐人可获赠7天服务器使用时长。
6. 活动期间享宕机补偿标准翻倍、简单网站迁移协助及技术工单优先处理权益。
温馨提示:优惠码不适用于拼团套餐、活动轻量产品、年付订单及续费订单;拼团套餐为独立特价活动,不与赠时类福利叠加。赠送时长不可折现、退款或跨账户转移,具体规则以活动页面说明为准。
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意