前言
在 CICD 流水线中,代码质量其实是很关键的一环。SonarQube 是一个「持续代码质量」检测的服务。在 DevOps 持续集成中对把控代码质量很有帮助。
命令行启动
首先以命令行的方式启动,将默认的一些配置拷贝到本地磁盘,比如插键、配置文件等:
1 | mkdir -p /data/sonar |
为了对 sonarqube 进行汉化,下载了中文插键。更多的插键下载,可以访问:插键
配置数据库
我使用的是 MySQL 数据库,为了实现权限分离,创建了单独的 sonar 数据库和对应的账号:
1 | docker exec -it devops-mysql |
数据库我也是用 docker 创建的,可以参考之前的文章使用容器 Docker 创建开发环境。
连接数据库
1 | docker run -d --name sonarqube \ |
Use of the environment variables SONARQUBE_JDBC_USERNAME, SONARQUBE_JDBC_PASSWORD and SONARQUBE_JDBC_URL is deprecated, and will stop working in future releases.
网上一些教程还是采用的旧的环境变量,官网已经说快要废弃了。
Compose 方式启动
如果你 MySQL 和 sonarqube 服务是在一个 docker-compose.yml 文件中的话,那么它们默认会处于同一个容器网络中,sonarqube 是可以连接上的。对这块网络知识不了解的,可以查看这个总结:Docker Compose 方式下的容器网络基础知识点
如果是在同一台机器上,MySQL 容器已经创建好了,和 sonarqube 不是同一个 docker-compose.yml 方式创建的,那么,这时候就需要配置,才能让两个容器实现网络互通。
sonarqube 的 docker-compose.yml:
1 | version: "2.4" |
可以发现,这时候 sonarqube 网络和 MySQL 网络是通的,而且,使用 service name
或者 container name
都可以查询到主机。因此,sonar.jdbc.url
可以配置成:
jdbc:mysql://mysql:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=false
jdbc:mysql://devops-mysql:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=false
我们的服务已经正常启动啦:
示例代码
本文的 docker-compose
文件,归档在:awesome-docker-service-for-me