一、前言
docker compose 方式安装 sonarqube 是我最推荐的方式。
理由有如下:
1、资源占用少。
2、sonarqube 依赖 Elasticsearch(存储代码扫描报告)、postgres(存储规则数据、账号密码等)。而 Elasticsearch 本身是不能用 root 账户启动的(如果是 tar 包安装在启动 sonarqube 的时候经常忘记切换账户而启动失败),postgres 也得安装,java 也得装(java 还有版本的限制,高版本的 sonarqube 都依赖到 java 11\java 17 很容易跟项目的Java版本冲突)。
3、配置操作简单(毕竟时间就是生命)。
二、安装准备
1、一台2核4G的虚拟机(不管是VMWare还是阿里云ECS,2C4G至少保证服务启动起来,虚拟机不会卡死)。
2、安装有 docker 和 docker compose(可以看我的博文 3、CentOS7 上安装 Docker-CSDN博客)
三、版本选择
1、sonarqube 版本
现在sonarqube官网 上最新版是10.4,但是长期维护版是9.9.4,所以我们 sonarqube 版本选用 9.9.4 这个版本。
2、sonarqube-community-branch-plugin 版本
现在我们官网上下到的 sonarqube 都是社区版 Community Edition,社区版代码扫描分支只支持 master,要多分支支持,需要再下载一个插件 sonarqube-community-branch-plugin,放到 /opt/sonarqube/extensions/plugins 下面(注意放到别的目录不起作用)。
我们进到 sonarqube-community-branch-plugin的github。
在兼容性这一块,sonarqube 9.9 提供的是 1.14.0 版本的插件。
切换到 1.14.0 Tags
在安装文档里,有 docker compose 的 yml。
可以直接拿来用,但需要改造。
四、安装
1、docker-compose.yml
version: "2"
services:
sonarqube:
image: sonarqube:lts
container_name: sonarqube
depends_on:
- db
ports:
- 9000:9000
networks:
- sonarnet
environment:
SONARQUBE_JDBC_URL: jdbc:postgresql://db:5432/sonar
SONARQUBE_JDBC_USERNAME: sonar
SONARQUBE_JDBC_PASSWORD: sonar
volumes:
- ./sonarqube/conf:/opt/sonarqube/conf
- ./sonarqube/data:/opt/sonarqube/data
- ./sonarqube/extensions:/opt/sonarqube/extensions
- ./sonarqube/lib/bundled-plugins-plugins:/opt/sonarqube/lib/bundled-plugins
- ./sonarqube-community-branch-plugin-1.14.0.jar:/opt/sonarqube/extensions/plugins/sonarqube-community-branch-plugin.jar
- ./sonarqube-community-branch-plugin-1.14.0.jar:/opt/sonarqube/lib/common/sonarqube-community-branch-plugin.jar
db:
image: postgres
container_name: postgres
networks:
- sonarnet
environment:
POSTGRES_USER: sonar
POSTGRES_PASSWORD: sonar
POSTGRES_DB: sonar
volumes:
- ./postgresql:/var/lib/postgresql
- ./postgresql/data:/var/lib/postgresql/data
networks:
sonarnet:
driver: bridge
说明:
services 表示有几个服务,当前YML有两个服务 sonarqube、db
image: sonarqube:lts
表示拉取的镜像是 sonarqube:lts sonarqube 是镜像名称,lts 是镜像版本,Long Term Support 就是 9.9.4
depends_on 表示服务的依赖关系,定义服务间的启动顺序。sonarqube 依赖 db,则要 db 容器先启动,sonarqube 再启动。
environment 类似于 docker run -e ,有两种格式
表示创建的 postgres 数据库 用户名、密码、默认数据库 都是 sonar
environment: - POSTGRES_USER=sonar - POSTGRES_PASSWORD=sonar - POSTGRES_DB=sonar environment: POSTGRES_USER: sonar POSTGRES_PASSWORD: sonar POSTGRES_DB: sonar
volumes 表示挂载的容器数据卷
类似于 docker run -v
volumes 左边的这些目录在宿主机上要先创建。
./ 表示当前目录
2、创建挂载目录
先把 sonarqube-community-branch-plugin-1.14.0.jar 和 docker-compose.yml 放到虚拟机某个路径下
创建挂载目录
修改目录权限
chmod 777 -R 目录
-R 表示级联地修改,包括它下面的子路径
说明:
之所以要修改,是因为 sonarqube ES 在启动的时候,会报没有权限创建路径
3、挂载 sonar.properies
将 sonar.properies 放置到 /sonarqube/conf 目录下,让它能挂载进容器的 /opt/sonarqube/conf
sonar.properies 配置如下
sonar.web.javaAdditionalOpts=-javaagent:./extensions/plugins/sonarqube-community-branch-plugin.jar=web
sonar.ce.javaAdditionalOpts=-javaagent:./extensions/plugins/sonarqube-community-branch-plugin.jar=ce
sonar.jdbc.url=jdbc:postgresql://db:5432/sonar?currentSchema=public
sonar.jdbc.username=sonar
sonar.jdbc.password=sonar
说明:
1、上面两项 javaAdditionalOpts 是 sonarqube-community-branch-plugin 插件所需要的。
2、下面三项是 sonarqube 连接 postgre 所需要的。
如果没有配置下面三项,sonarqube 启动起来会以内存模式启动。
Embedded database should be used for evaluation purposes only
docker-compose.yml 里面的 environment 没起作用。
3、还需要注意的一点是
volumes 这里的名称,要和 javaAdditionalOpts 里面的名称对应上,否则 sonarqube 启动会找不到插件。
4、增加可用的内存区域
永久修改
vim /etc/sysctl.conf
# 在最下面添加
vm.max_map_count=262144
# 使生效
sysctl -p
说明:
如果不修改,sonarqube 启动起来,会报虚拟内存区域不够
max virtual memory areas vm.max map count [65530] is too low, increase to at least [262144]
5、docker compose up -d
在 docker-compose.yml 文件所在目录,执行命令
docker compose up -d
-d 表示后台启动
6、日志查看是否启动成功
# 查看全部容器实例,运行的,与不在运行的都显示出来
docker ps -al
# 查看容器日志
docker logs [容器ID|容器名]
es、web、ce 启动成功,就证明 sonarqube 启动是成功的
日志中还提示你,默认的 admin 密码还没修改,要赶紧去修改。
Default Administrator credentials are still being used.
7、登录验证
http://你的IP:9000/
默认管理员账号 admin/admin
说明:
这个可以通过配置文件 sonar.properties 修改
sonar.login=admin
sonar.password=admin
首次登录,会叫你修改密码
接着会有插件风险提示,因为
sonarqube-community-branch-plugin 插件不是 sonarqube 官网插件,会有风险提示。
点击 I understand the risk 后,就进入 sonarqube web 界面了。
分别点击 1、2、3 就能在应用市场看到我们已经安装的插件里面,有
sonarqube-community-branch-plugin文章来源:https://www.toymoban.com/news/detail-849535.html
文章来源地址https://www.toymoban.com/news/detail-849535.html
到了这里,关于docker compose 下安装 sonarqube(带多分支插件)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!