Skip to content

快速参考

  • 维护者:
    SonarSource

  • 获取帮助的途径:
    SonarSource 社区论坛、Docker 社区论坛、Docker 社区 Slack 或 Stack Overflow

支持的标签和相应的 Dockerfile 链接

快速参考(续)

什么是 SonarQube?

SonarQube 是领先的工具,用于持续检查代码库的代码质量和安全性,并在代码审查期间指导开发团队。 SonarQube 涵盖 27 种编程语言,同时与现有软件管道配对,为开发人员提供明确的修复指导,以了解和修复问题,并为团队整体提供更好,更安全的软件。 超过 225,000 次部署帮助小型开发团队以及全球组织,SonarQube 为世界各地的所有团队和公司提供了拥有和影响其代码质量和安全性的手段。

logo

如何使用此图像

在这里,您将找到 SonarQube 社区版、开发者版、企业版和数据中心版的 Docker 镜像。

Docker 主机要求

由于 SonarQube 使用嵌入式 Elasticsearch,请确保您的 Docker 主机配置符合 Elasticsearch 生产模式要求和文件描述符配置。

例如,在 Linux 上,您可以通过在主机上以 root 身份运行以下命令来设置当前会话的推荐值:

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

试用 SonarQube

若要快速运行演示实例,请参阅“试用 SonarQube”页面上的“使用 Docker”。当您准备好迁移到更可持续的设置时,请花一些时间阅读下面的“安装和配置”部分。

安装

多平台支持:从 SonarQube 9.9 LTS 开始,docker 镜像支持在 amd64 架构和基于 arm64 的苹果硅(M1)上运行。

有关安装说明,请参阅在安装服务器页面上从 Docker 映像安装服务器。

要使用 Data Center Edition 运行集群,请参考在“将服务器安装为集群”页面上从 Docker 映像安装 SonarQube。

在 Docker 映像上, lts 标记会在每个新的 LTS 版本中被替换。如果您想避免任何自动的主要升级,我们建议使用相应的 9.9-<edition> 标记而不是 lts-<edition>

配置

端口绑定

默认情况下,在容器中运行的服务器将在端口 9000 上监听。您可以使用 -p 9000:9000 参数将容器端口 9000 暴露给主机端口 9000,例如下面的命令:

docker run --name sonarqube-custom -p 9000:9000 sonarqube:10.6-community

然后,您可以在 Web 浏览器中浏览到 http://localhost:9000http://host-ip:9000 以访问 SonarQube Web 界面。

数据库

默认情况下,该图像将使用不适合生产的嵌入式 H2 数据库。

警告:只有一个 SonarQube 实例可以连接到数据库模式。如果您使用的是 Docker Swarm 或 Kubernetes,请确保多个 SonarQube 实例不会同时在同一个数据库模式上运行。这将导致 SonarQube 行为不可预测,数据将被损坏。在 SONAR-10362 之前没有任何保护措施。Data Center Edition 也有同样的限制,即一次只能有一个集群连接到一个数据库模式。

按照 https://docs.sonarqube.org/latest/setup/install-server/ 中的“安装数据库”部分设置数据库。

使用卷

我们建议为以下目录创建卷:

  • /opt/sonarqube/data :数据文件,例如嵌入式 H2 数据库和 Elasticsearch 索引
  • /opt/sonarqube/logs :包含有关访问、Web 进程、CE 进程、Elasticsearch 日志的 SonarQube 日志
  • /opt/sonarqube/extensions :用于第三方插件

警告:您不能在多个 SonarQube 实例上使用相同的卷。

升级

对于升级说明,请参阅升级服务器页面上的从 Docker 映像升级。

高级配置

定制图像

在某些环境中,准备包含您的配置的自定义映像可能更有意义。实现此目的的 Dockerfile 可能很简单,例如:

FROM sonarqube:10.6-community
COPY sonar-custom-plugin-1.0.jar /opt/sonarqube/extensions/

然后,您可以使用类似以下的命令构建并尝试该映像:

$ docker build --tag=sonarqube-custom .
$ docker run -ti sonarqube-custom

避免 SonarQube 硬终止

一个 SonarQube 实例将优雅地停止,等待任何正在进行的任务完成。等待正在进行的任务完成可能需要大量时间,而 Docker 在停止时默认情况下不会预期到这一点。为了避免 SonarQube 实例在 10 秒后被 Docker 守护进程杀死,最好配置一个超时来停止容器,例如: --stop-timeout

docker run --stop-timeout 3600 sonarqube

管理

管理指南可以在这里找到。

许可证

SonarQube 社区版根据 GNU 较宽松通用公共许可证第 3.0 版获得许可。SonarQube 开发者版、企业版和数据中心版根据 SonarSource 条款和条件获得许可。

与所有 Docker 镜像一样,这些镜像可能还包含其他软件,这些软件可能受其他许可证的约束(例如来自基础发行版的 Bash 等,以及所包含的主要软件的任何直接或间接依赖项)。

一些能够自动检测到的额外许可证信息可能会在 repo-info 存储库的 sonarqube/ 目录中找到。

对于任何预构建的映像使用,映像用户有责任确保对此映像的任何使用都符合其中包含的所有软件的任何相关许可证。