参考文章阿里云Centos7.4安装docker
再安装docker-compose
[root@iz2ze4rdade76no6ly514vz ~]# yum install docker-compose
[root@iz2ze4rdade76no6ly514vz ~]# docker-compose -version
docker-compose version 1.18.0, build 8dd22a9
其中数据库使用阿里云机器上安装的mysql数据库,也可以使用docker数据库,查看下方另一个代码配置。
#vi docker-compose.yaml
version: '3'
services:
sonarqube:
container_name: sonarqube
image: sonarqube
environment:
sonar.jdbc.username: root
sonar.jdbc.password: root
sonar.jdbc.url: jdbc:mysql://ip:3306/sonar?useUnicode=true&characterEncoding=utf8
ports:
- 9000:9000
restart:
always
volumes:
- /path/to/logs:/home/yigou/sonarqube/logs
- /path/to/extensions:/home/yigou/sonarqube/extensions
下面是使用postgres的docker数据库配置,两种方式都可以。
version: '3'
services:
mydb:
image: postgres:11
volumes:
- ./data:/var/lib/postgresql/data
environment:
POSTGRES_USER: sonar
POSTGRES_DB: sonar
POSTGRES_PASSWORD: sonar
ports:
- "5433:5432"
restart:
always
sonarqube:
image: sonarqube
environment:
sonar.jdbc.username: sonar
sonar.jdbc.password: sonar
sonar.jdbc.url: jdbc:postgresql://mydb:5432/sonar
ports:
- "9823:9000"
restart:
always
networks:
postgresnetwork001:
driver: 'local'
启动docker并查看日志
[root@iz2ze4rdade76no6ly514vz app]# docker-compose -f docker-compose.yaml up -d
[root@iz2ze4rdade76no6ly514vz app]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
2ba6c9e71762 sonarqube "./bin/run.sh" 43 minutes ago Up 43 minutes 0.0.0.0:9000->9000/tcp sonarqube
[root@iz2ze4rdade76no6ly514vz app]# docker logs -f 2ba6c9e71762
登录质量检查平台 http://127.0.0.1:9823 默认账户:admin/admin
创建分析的项目
在你的maven项目里,执行:
sonar:sonar -Dsonar.host.url=http://127.0.0.1:9823 -Dsonar.login=b291a9e2da54ae906616e8e81eebc4fdea1e54c1
在eclipse中的maven项目,编写上述命令,如下图所示。
[INFO] Calculating CPD for 780 files
[INFO] CPD calculation finished
[INFO] Analysis report generated in 1316ms, dir size=19 MB
[INFO] Analysis report compressed in 7613ms, zip size=7 MB
[INFO] Analysis report uploaded in 25772ms
[INFO] ANALYSIS SUCCESSFUL, you can browse http://ip/dashboard?id=yigou
[INFO] Note that you will be able to access the updated dashboard once the server has processed the submitted analysis report
[INFO] More about the report processing at http://ip:9000/api/ce/task?id=AWqfpIhFtfQPayYsj_6t
[INFO] Analysis total time: 3:07.485 s
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 03:43 min
[INFO] Finished at: 2019-05-10T10:49:07+08:00
[INFO] Final Memory: 48M/1459M
[INFO] ------------------------------------------------------------------------
哪里寻求帮助:
在SonarSource社区论坛,在Docker社区论坛,在DockerSlack社区,或Stackoverflow
凡到文件的问题:
https://github.com/SonarSource/docker-sonarqube/
维护者:
SonarSource
支持的架构 更多信息)
amd64
已发布的图像工件详细信息:
repo-info repo的repos/sonarqube/目录(历史记录)
(图像元数据,传输大小等)
图片更新:
官方图片PR带有标签library/sonarqube
官方图片repo的library/sonarqube文件(历史)
此描述的来源:
docs repo的sonarqube/目录(历史)
支持的Docker版本:
最新版本(尽力降至1.6)
SonarQube是一种用于持续检查代码质量的开源产品。
此Docker镜像包含SonarQube的Community Edition。
服务器以这种方式启动:
$ docker run -d --name sonarqube -p 9000:9000 sonarqube
默认情况下,您可以admin使用密码登录admin,请参阅身份验证文档。
分析Maven项目:
# On Linux:
mvn sonar:sonar
# With boot2docker:
mvn sonar:sonar -Dsonar.host.url=http://$(boot2docker ip):9000
要分析其他类型的项目,有关详细信息,请参阅分析源代码文档。
默认情况下,映像将使用不适合生产的嵌入式H2数据库。
生产数据库被配置成与作为环境变量以下SonarQube属性:sonar.jdbc.username,sonar.jdbc.password和sonar.jdbc.url。
$ docker run -d --name sonarqube \
-p 9000:9000 \
-e sonar.jdbc.username=sonar \
-e sonar.jdbc.password=sonar \
-e sonar.jdbc.url=jdbc:postgresql://localhost/sonar \
sonarqube
PS:请注意请保证事先您已经在生成环境上部署了postgresql,此处的username,password,localhost要改成生成环境上对应账户、密码、数据库IP
使用环境变量SONARQUBE_JDBC_USERNAME,SONARQUBE_JDBC_PASSWORD并且SONARQUBE_JDBC_URL已弃用,并将在将来的版本中停止工作。
这里可以找到更多资料Run SonarQube with a PostgreSQL database。
您可以将sonar.配置属性作为Docker环境变量传递,如上面的示例所示,用于数据库配置。
图像包含SonarQube安装位置/opt/sonarqube。您可以使用绑定挂载的持久卷来覆盖选定的文件或目录,例如:
sonarqube_conf:/opt/sonarqube/conf:配置文件,如 sonar.properties
sonarqube_data:/opt/sonarqube/data:数据文件,例如嵌入式H2数据库和Elasticsearch索引
sonarqube_logs:/opt/sonarqube/logs
sonarqube_extensions:/opt/sonarqube/extensions:插件,如语言分析器
您还可以使用命令行中指定的绑定挂载配置,例如:
$ docker run -d --name sonarqube \
-p 9000:9000 \
-v /path/to/conf:/opt/sonarqube/conf \
-v /path/to/data:/opt/sonarqube/data \
-v /path/to/logs:/opt/sonarqube/logs \
-v /path/to/extensions:/opt/sonarqube/extensions \
sonarqube
在某些环境中,准备包含配置的自定义映像可能更有意义。A Dockerfile实现这一点可能很简单:
FROM sonarqube:7.4-community
COPY sonar.properties /opt/sonarqube/conf/
然后,您可以使用以下内容构建和尝试图像:
$ docker build --tag=sonarqube-custom .
$ docker run -ti sonarqube-custom
管理指南可以在这里找到Documentation。
查看此映像中包含的软件的许可证信息。
与所有Docker映像一样,这些映像也可能包含其他许可证(例如来自基本分发版的Bash等,以及所包含的主要软件的任何直接或间接依赖关系)。
这是能够自动检测一些额外的许可信息可能中找到的repo-info版本库的sonarqube/目录。
对于任何预先构建的图像使用,图像用户有责任确保对此图像的任何使用都符合其中包含的所有软件的任何相关许可。
糟糕的复杂度分布:文件、类、方法等,如果复杂度过高将难以改变,这会使得开发人员难以理解它们,且如果没有自动化的单元测试,对于程序中的任何组件的改变都将可能导致需要全面的回归测试
重复:显然程序中包含大量复制粘贴的代码是质量低下的,sonar 可以展示源码中重复严重的地方
缺乏单元测试:sonar 可以很方便地统计并展示单元测试覆盖率
没有代码标准:sonar 可以通过 PMD、CheckStyle、Findbugs 等等代码规则检测工具规范代码编写
没有足够的或者过多的注释:没有注释将使代码可读性变差,特别是当不可避免地出现人员变动时,程序的可读性将大幅下降。而过多的注释又会使得开发人员将精力过多地花费在阅读注释上,亦违背初衷
潜在的 bug:sonar 可以通过 PMD、CheckStyle、Findbugs 等等代码规则检测工具检测出潜在的 bug。
翻译自dockerhub-sonarqube