Docker上快速搭建与配置SonarQube

需积分: 49 13 下载量 97 浏览量 更新于2024-09-12 收藏 422KB PDF 举报
本文档是关于在Docker环境下安装并配置SonarQube的详细教程,SonarQube是一个用于代码质量管理的开源平台,它提供了静态代码分析和代码覆盖率报告。以下将详细介绍整个安装过程以及如何在Maven项目中集成SonarQube进行代码扫描。 首先,你需要确保你的Docker环境已配置好,并且有权限访问PostgreSQL数据库。安装步骤如下: 1. 拉取并启动PostgreSQL镜像: 使用命令`docker pull postgres`获取PostgreSQL的镜像,然后通过`docker run`启动一个容器,指定环境变量`POSTGRES_USER`和`POSTGRES_PASSWORD`,如`docker run --name db -e POSTGRES_USER=sonar -e POSTGRES_PASSWORD=sonar postgres`。 2. 获取SonarQube镜像: 同样使用`docker pull`命令获取SonarQube的镜像,例如`docker pull sonarqube`。 3. 启动SonarQube服务并链接到数据库: 使用`docker run`启动SonarQube容器,并通过`--link`选项将其与PostgreSQL容器关联,指定JDBC连接字符串,如`docker run --name sq --link db:db -e SONARQUBE_JDBC_URL=jdbc:postgresql://db:5432/sonar -p 9000:9000 sonarqube`。这会将SonarQube容器映射到主机的9000端口,方便后续访问。 4. 检查和处理启动问题: 如果容器启动后立即退出,可能是因为内存不足。此时,可以使用`docker ps -a`查看所有容器,然后通过`docker start -i (container_id)`启动并检查错误日志。 5. 访问SonarQube界面: 安装完成后,通过浏览器访问`http://192.168.99.100:9000`,首次登录时需要创建一个令牌。 6. 配置Maven与SonarQube集成: 在Maven的`settings.xml`文件中,加入`<pluginGroups>`和`<profiles>`部分,其中`<sonar.host.url>`属性指定了SonarQube服务器的地址。为了查看代码覆盖率报告,还需要在`<profiles>`中的`<profile>`标签内,添加`<id>sonar-coverage</id>`,并配置相关的插件和选项,比如`<sonar.jacoco.reportPath>`,以便 SonarQube读取覆盖率报告。 在`pom.xml`中,添加如下的`<profile>`标签来启用覆盖率扫描: ```xml <profiles> <profile> <id>sonar-coverage</id> <activation> <activeByDefault>true</activation> </activation> <build> <plugins> <plugin> <groupId>org.jacoco</groupId> <artifactId>jacoco-maven-plugin</artifactId> <executions> <execution> <id>jacoco-prepare-agent</id> <goals> <goal>prepare-agent</goal> </goals> </execution> <execution> <id>jacoco-report</id> <phase>test</phase> <goals> <goal>report</goal> </goals> </execution> </executions> </plugin> </plugins> </build> </profile> </profiles> ``` 最后,确保在执行`mvn clean package sonar:sonar`命令时,会自动触发SonarQube的代码扫描,包括覆盖率分析。 本文档提供了一个完整的步骤,教你如何在Docker中安装SonarQube,并将其集成到Maven项目中以实现代码质量管理,包括数据库配置、容器管理、以及代码覆盖率的可视化报告。