SonarQube Docker环境部署流程

这篇具有很好参考价值的文章主要介绍了SonarQube Docker环境部署流程。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

本文以SonarQube 10.1版本为例,其余版本可以查看官方文档。

一、软/硬件要求

1.1软件要求

JavaSonarQube 服务器需要 Java 版本 17,SonarQube 扫描仪需要 Java 版本 11 或 17。

Java Server Scanner

Oracle JRE 17

支持 支持

Oracle JRE 11

不支持 支持

OpenJDK 17

支持 支持

OpenJDK 11

支持 支持

数据库

数据库

Server

PostgreSQL 15

支持

PostgreSQL 14

支持

PostgreSQL 13

支持

PostgreSQL 12

支持

PostgreSQL 11

支持

PostgreSQL

必须配置UTF-8字符集

Microsoft SQL Server

支持,

2022 (MSSQL 16.0) 捆绑Microsoft JDBC 驱动程序。支持速成版。

Microsoft SQL Server

支持,

2019 (MSSQL Server 15.0) 捆绑Microsoft JDBC 驱动程序。支持速成版。

Microsoft SQL Server

支持,

2016 (MSSQL Server 13.0) 捆绑Microsoft JDBC 驱动程序。支持速成版。

Microsoft SQL Server

支持,

2014 (MSSQL Server 12.0) 捆绑Microsoft JDBC 驱动程序。支持速成版。

Microsoft SQL Server

排序规则必须区分大小写 (CS) 和区分重音 (AS)(示例:Latin1_General_CS_AS)。

Microsoft SQL Server

READ_COMMITTED_SNAPSHOT必须在 SonarQube 数据库上设置,以避免在重负载下出现潜在的死锁。

Microsoft SQL Server

同时支持 Windows 身份验证(“集成安全性”)和 SQL Server 身份验证。有关配置身份验证的说明,请参阅安装服务器中的Microsoft SQL Server 部分。

Oracle 21C

支持

Oracle 19C

支持

Oracle XE版本

支持

Oracle

必须配置为使用 UTF8 系列字符集(请参阅NLS_CHARACTERSET)。

Oracle

不支持ojdbc14.jar驱动程序。

Oracle

建议使用最新的 Oracle JDBC 驱动程序。

Oracle

仅支持精简模式,不支持 OCI。

Oracle

仅支持参数MAX_STRING_SIZE=STANDARD(最大长度为4000字节),不支持EXTENDED (最大长度为32767字节)。

浏览器要获得SonarQube提供的完整体验,您必须在浏览器中启用JavaScript。

浏览器

支持版本

Microsoft Edge

支持,Latest

Mozilla Firefox

支持,Latest

Google Chrome

支持,Latest

Safari

支持,Latest

平台参数配置

如果是在Linux上运行:

  1. vm.max_map_count必须大于等于524288
  2. fs.file-max必须大于等于131072
  3. 运行SonarQube的用户至少可以打开131072个文件描述符
  4. 运行SonarQube的用户至少可以打开8192个线程

可以使用以下命令查看上述参数的值:

sysctl vm.max_map_count
sysctl fs.file-max
ulimit -n
ulimit -u

可以通过root用户按照以下命令为当前会话动态设置上述参数的值:

sysctl -w vm.max_map_count=524288
sysctl -w fs.file-max=131072
ulimit -n 131072
ulimit -u 8192

如果要永久地设置上述参数,必须更新/etc/sysctl.d/99-sonarqube.conf(或者根据需要更新/etc/sysctl.conf)。

如果运行SonarQube(本例中为SonarQube)的用户没有权限打开至少131072个描述符,则必须在/etc/security/limits.d/99-sonarqube.conf(或/etc/security/limits.conf)中插入这一行:

sonarqube   -   nofile   131072
sonarqube   -   nproc    8192

如果使用systemd来启动SonarQube,必须在单元文件[Service]部分中指定这些限制:

[Service]
...
LimitNOFILE=131072
LimitNPROC=8192
...

seccopm过滤器

默认情况下,Elasticsearch 使用seccopm过滤器。确保使用启用了 seccomp 的内核。

检查seccomp在内核上是否可用,请使用:

$ grep SECCOMP /boot/config-$(uname -r)

如果内核具有seccomp,可以看到以下内容:

CONFIG_HAVE_ARCH_SECCOMP_FILTER=y
CONFIG_SECCOMP_FILTER=y
CONFIG_SECCOMP=y

1.2硬件要求

最低要求

  1. SonarQube 服务器的小规模(个人或小型团队)实例至少需要 2GB 的 RAM 才能高效运行,并且需要 1GB 的可用 RAM 用于操作系统。
  2. 需要的磁盘空间量将取决于SonarQube分析的代码量(Sonar官方提供的数据:100万行代码/3GB/PostgreSQL)。
  3. SonarQube必须安装在具有出色读写性能的硬盘驱动器上。最重要的是,“data”文件夹包含Elasticsearch索引,当服务器启动并运行时,将在其上完成大量的I / O。因此,读写硬盘性能将对SonarQube服务器的整体性能产生重大影响。

企业级硬件要求

对于大型团队或SonarQube的企业级安装,需要额外的硬件。在企业级,监控SonarQube实例至关重要,并且应该随着实例的增长进一步的硬件升级。起始配置应至少包括:

  1. 8 个内核,允许主 SonarQube 平台与多个计算引擎工作线程一起运行。
  2. 16GB 内存 有关数据库和 Elasticsearch 的其他要求和建议,请参阅硬件建议。

二、部署数据库

2.1 PostgreSQL(推荐)

2.1.1拉取镜像

docker pull postgres:版本号

2.1.2新建目录

mkdir -p /home/apps/postgres/{postgresql,data}

2.1.3创建并启动

docker run -d --name postgres -p 5432:5432 \
-v /home/apps/postgres/postgresql:/var/lib/postgresql \
-v /home/apps/postgres/data:/var/lib/postgresql/data \
-v /etc/localtime:/etc/localtime:ro \
-e POSTGRES_USER=your_user\
-e POSTGRES_PASSWORD=your_password\
-e POSTGRES_DB=your_db\
-e TZ=Asia/Shanghai \
--restart always \
--privileged=true \
postgres:版本号

2.2.4验证

等待一段时间,直到容器启动并运行 PostgreSQL。使用以下命令检查容器状态:

docker ps

使用任何客户端连接到 PostgreSQL。只需使用以下详细信息:

Host: ip
Port: 5432
Username: your_user
Password: your_password

2.1.5其他设置

设置自定义模式而不是默认的“public”模式,则必须设置search_path 属性:

ALTER USER mySonarUser SET search_path to mySonarQubeSchema

备注:版本 12.1.0.1 和 12.1.0.2 有重大错误,不建议与 SonarQube 一起使用。 

三、部署SonarQube

3.1拉取镜像

以下安装的是社区免费的最新版

# 社区版
docker pull sonarqube:community
# 开发版
docker pull sonarqube:developer 
# 企业版
docker pull sonarqube:enterprise

3.2修改内核参数

因为SonarQube内置了ElasticSearch,不修改启动会报错:ERROR: Elasticsearch did not exit normally - check the logs at /opt/sonarqube/logs/sonarqube.log

vim /etc/sysctl.conf
 
# 增加以下配置
vm.max_map_count=262144
fs.file-max=65536
 
# 使配置生效
sysctl -p

3.3创建并启动

# 社区版
docker run -d --name sonarqube_community  --restart always \
    -p 9000:9000 \
    -e SONAR_JDBC_URL=jdbc:postgresql://ip:5432/postgres?currentSchema=your_schema \
    -e SONAR_JDBC_USERNAME=your_user \
    -e SONAR_JDBC_PASSWORD=your_password \
    -v sonarqube_data:/opt/sonarqube/data \ 
    -v sonarqube_extensions:/opt/sonarqube/extensions \
    -v sonarqube_logs:/opt/sonarqube/logs \
    sonarqube:community

# 开发版本
docker volume create --name sonarqube_data_dev
docker volume create --name sonarqube_logs_dev
docker volume create --name sonarqube_extensions_dev
docker run -d --name sonarqube_developer --restart always  \
    -p 9000:9000 \
    -e SONAR_JDBC_URL=jdbc:postgresql://ip:5432/postgres?currentSchema=your_schema \
    -e SONAR_JDBC_USERNAME=your_user \
    -e SONAR_JDBC_PASSWORD=your_password \
    -v sonarqube_data_dev:/opt/sonarqube/data \
    -v sonarqube_extensions_dev:/opt/sonarqube/extensions \
    -v sonarqube_logs_dev:/opt/sonarqube/logs \
    sonarqube:developer

# 企业版
docker volume create --name sonarqube_data_enterprise
docker volume create --name sonarqube_logs_enterprise
docker volume create --name sonarqube_extensions_enterprise 
docker run -d --name sonarqube_enterprise --restart always \
    -p 9000:9000 \
    -e SONAR_JDBC_URL=jdbc:postgresql://ip:5432/postgres?currentSchema=your_schema \
    -e SONAR_JDBC_USERNAME=your_user \
    -e SONAR_JDBC_PASSWORD=your_password \
    -v sonarqube_data_enterprise:/opt/sonarqube/data \
    -v sonarqube_extensions_enterprise:/opt/sonarqube/extensions \
    -v sonarqube_logs_enterprise:/opt/sonarqube/logs \
    sonarqube:enterprise

可以在启动命令中指定数据库连接,也可以编辑 <SONARQUBE_HOME>/conf/sonar.properties 以配置数据库设置。每个支持的数据库都可以使用模板。只需取消注释并配置您需要的模板,并注释掉专用于 H2 的行:

docker sonarqube,sonarqube,docker,容器,运维

详细步骤如下:

①使用以下命令进入正在运行的Docker容器:

docker exec -it <container_name> bash

②在容器中,找到/opt/sonarqube/conf/sonar.properties文件,并使用文本编辑器(如vi或nano)打开它,添加相关数据库的配置。

③重启SonarQube容器

docker restart <container_name>

④验证是否配置成功

登陆对应数据库查看相关表是否创建成功,以PostgreSQL为例:

docker sonarqube,sonarqube,docker,容器,运维

3.4防火墙配置

firewall-cmd --add-port=9000/tcp --permanent
firewall-cmd --reload

3.5查看日志

docker logs sonarqube

3.6页面访问

http://ip:9000,默认账号:admin,初始密码:admin

docker sonarqube,sonarqube,docker,容器,运维

第一次登陆需要修改密码。

docker sonarqube,sonarqube,docker,容器,运维

docker sonarqube,sonarqube,docker,容器,运维

四、部署SonarScanner

SonarScanner一般是部署在需要扫描代码的机器。

4.1拉取镜像

docker pull sonarsource/sonar-scanner-cli:4.8.0

可以到docker官网获取SonarScanner对应版本拉取命令。 

4.2创建并启动

下载完成后,使用以下命令来启动SonarScanner容器:

docker run -ti --rm -v /path/to/your/code:/usr/src sonarsource/sonar-scanner-cli

其中,/path/to/your/code是您要扫描的代码所在的本地目录的路径。 

4.3容器配置

①在容器中配置SonarScanner

docker run -ti --rm -v /path/to/your/code:/usr/src sonarsource/sonar-scanner-cli sonar-scanner \
  -Dsonar.projectKey=your_project_key \
  -Dsonar.sources=. \
  -Dsonar.host.url=http://your_sonarqube_server:9000 \
  -Dsonar.login=your_sonarqube_token

在上面的命令中,您需要将以下参数替换为实际值:

- your_project_key:您的项目的唯一键

- your_sonarqube_server:您的SonarQube服务器的URL

- your_sonarqube_token:您的SonarQube服务器的访问令牌

②也可以在项目根目录下创建sonar-project.properties文件指定相关参数

docker sonarqube,sonarqube,docker,容器,运维

配置文件参数解释:

sonar.projectKey=项目key,在SonarQube新建页面时获取

sonar.projectName=项目名称

sonar.projectVersion=项目版本

sonar.sources=源码地址,例如:src

sonar.java.binaries=二进制代码地址,例如:./target/classes

sonar.branch.name=代码分支,例如:master

sonar.sourceEncoding=源码编码格式,UTF-8

sonar.host.url=SonarQube地址,http://127.0.0.1:9000

sonar.login=SonarQube登陆账号,也可以使用sonar.token替换,token在SonarQube创建项目时获取

sonar.password=SonarQube登陆密码,也可以使用sonar.token替换,token在SonarQube创建项目时获取

sonar.language=指定扫描的语言,选填,例如:Java

备注:如果部署在其他平台需要配置环境变量指定到SonarScanner的bin目录。 

4.4验证

使用sonar-scanner -v命令验证是否部署成功。

docker sonarqube,sonarqube,docker,容器,运维

五、SonarLint配置

可以在IDE端通过SonarLint连接SonarQube,即可同步SonarQube扫描出来的问题,自定义规则问题也可以同步展示到IDE工具上。

docker sonarqube,sonarqube,docker,容器,运维 docker sonarqube,sonarqube,docker,容器,运维 docker sonarqube,sonarqube,docker,容器,运维 文章来源地址https://www.toymoban.com/news/detail-765330.html

到了这里,关于SonarQube Docker环境部署流程的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • docker compose 下安装 sonarqube(带多分支插件)

    docker compose 方式安装 sonarqube 是我最推荐的方式。 理由有如下: 1、资源占用少。 2、sonarqube 依赖 Elasticsearch(存储代码扫描报告)、postgres(存储规则数据、账号密码等)。而 Elasticsearch 本身是不能用 root 账户启动的(如果是 tar 包安装在启动 sonarqube 的时候经常忘记切换账户

    2024年04月13日
    浏览(22)
  • Docker 搭建sonarqube,并集成阿里P3C规则

    简介 本文安装的sonarqube是7.6-community版本,未安装最新版是因为7.9之后不再支持mysql。 如果你安装的是其他版本的sonarqube,那么不要使用插件包中的插件,会有版本兼容性问题。 插件 插件包 插件包中包含java语音插件,汉化插件,阿里P3C插件,开箱即用 使用 docker-compose 安装

    2024年02月12日
    浏览(28)
  • Linux部署sonarqube+Gogs+Jenkins(二)

    第一步:确认环境,进入到Jenkins【系统管理】—【全局工具配置】—【Git】为下图显示; 如果是windows系统,显示的是git.exe 如果是云服务器,显示的是git 第二步:构建项目时对项目的源码管理选择 Git 第三步:输入你仓库的SSH地址或者https地址,并且添加gitee的用户名和密码

    2024年04月11日
    浏览(26)
  • Linux部署Sonarqube+Gogs+Jenkins(一)

    需要下载对应的jdk的包 – jdk 11 或者通过xftp软件传输到服务器中 a. 添加一个环境变量:JAVA_HOME – java的路径 b. 添加一个环境变量:CLASSPATH c. 将JAVA可执行文件添加到PATH当中 d. 进行保存:esc ————:wq https://blog.csdn.net/YZL40514131/article/details/121583650 nohup java -jar jenkins.war jenki

    2024年04月17日
    浏览(24)
  • 【Docker】Docker的使用案例以及未来发展、Docker Hub 服务、环境安全、容器部署安全

    作者简介: 辭七七,目前大二,正在学习C/C++,Java,Python等 作者主页: 七七的个人主页 文章收录专栏: 七七的闲谈 欢迎大家点赞 👍 收藏 ⭐ 加关注哦!💖💖    Docker是一个命令行工具,它提供了中央“docker”执行过程中所需的所有工具 。这使得Docker的操作非常简单。

    2024年02月08日
    浏览(38)
  • gitlab部署及整合Jenkins持续构建(四)sonarqube9.9安装和使用(一步一坑)

    官网给出的各种环境下安装postgresql步骤:https://www.postgresql.org/download/ 以 CentOS7 + jdk17 为例: yum安装完,默认的pgsql-13的数据目录在 /var/lib/pgsql/13/data/ 除非 /var 目录可用空间很大,否则需要修改数据目录 记录配置文件路径,修改 listen_addresses = \\\'*\\\' ,postgresql启动参数 定义哪些

    2024年02月02日
    浏览(28)
  • 项目打包并部署到Docker环境的完整流程

    使用前端构建工具(例如Webpack、Vue CLI、Create React App)将前端项目打包成静态文件。 创建一个名为 Dockerfile 的文件,内容如下: 3.使用以下命令构建Docker镜像: 4.运行以下命令启动前端容器: 5.现在可以通过浏览器访问 http://localhost 来查看部署的前端应用。 1.确保你的后端

    2024年02月14日
    浏览(38)
  • tensorflow 1.15 gpu docker环境搭建;Nvidia Docker容器基于TensorFlow1.15测试GPU;——全流程应用指南

    TensorFlow 在新款 NVIDIA Pascal GPU 上的运行速度可提升高达 50%,并且能够顺利跨 GPU 进行扩展。 如今,训练模型的时间可以从几天缩短到几小时 TensorFlow 使用优化的 C++ 和 NVIDIA® CUDA® 工具包编写,使模型能够在训练和推理时在 GPU 上运行,从而大幅提速 TensorFlow GPU 支持需要多个

    2024年02月03日
    浏览(55)
  • 基础篇:容器化部署技术-—docker,从此摆脱多环境配置的苦恼!

    我们设想这样一个场景,现在 leader 给了你一个任务,让你把开发完毕的应用程序进行打包、分发、部署,要求多平台通用,程序的前后端是单独的工程、后端依赖了 mysql、redis、RabbitMQ 等。按常规的运维思路就是,先将配置好的前后端程序分别打包 -- 将打包文件上传到服务

    2024年02月22日
    浏览(36)
  • docker容器打包成镜像,在新的服务器上部署环境

    2719a6b5b8e1是容器id(用docker ps 命令查看) , my_paddle2.2.2:v1 是自己打包的镜像的名字命名格式,有冒号的 docker commit -a “shi” -m “to150” 2799a6b6b8e1 my_paddle2.2.2:v1 -o 和 是一个意思都是打包镜像的符号 sparkdemo:v1 ,就是有冒号,整体镜像名字规则 docker images查看镜像,后用命令保存

    2023年04月08日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包