本站支持搜索的镜像仓库:Docker Hub、gcr.io、ghcr.io、quay.io、k8s.gcr.io、registry.gcr.io、elastic.co、mcr.microsoft.com

SonarQube™是一个开源质量管理平台,用于分析和度量代码的技术质量。它使开发人员能够在早期阶段检测代码问题、漏洞和缺陷。
本打包的SonarQube Docker镜像基于官方SonarQube社区版二进制文件,但包含一些额外功能和插件,以增强其功能和可用性。
SonarQube™概述
获取SonarQube Docker镜像的推荐方式是从Docker Hub仓库拉取预构建镜像。
要使用特定版本,可以拉取带版本标签的镜像。您可以在Docker Hub仓库中查看可用版本列表。
25, 25.9, latest (sonarqube/Dockerfile)支持的架构:
linux/amd64linux/arm64SonarQube™需要访问PostgreSQL数据库来存储信息。您可以使用任何PostgreSQL数据库服务器,无论是在单独的容器中运行还是在远程主机上。
该仓库包含一个示例docker-compose.yml文件,展示了如何通过Docker Compose使用官方PostgreSQL Docker镜像运行SonarQube。
SonarQube实例将可通过http://localhost:9000访问(如果不是在本地运行Docker,则为http://<your-docker-host-ip>:9000)。可以通过修改docker-compose.yml文件的ports部分更改端口。此外,您可以通过设置SONARQUBE_PORT_NUMBER环境变量更改容器内的端口。
启动SonarQube镜像时,您可以通过在docker-compose文件或docker run命令行中传递一个或多个环境变量来调整实例配置。
以下部分描述了用于配置SonarQube实例的可用环境变量。
| 名称 | 描述 | 默认值 |
|---|---|---|
SONARQUBE_DEBUG | 启用调试模式。 | no |
SONARQUBE_LOG_LEVEL | 设置日志级别。支持的值:TRACE、DEBUG、INFO。 | INFO(如果启用SONARQUBE_DEBUG,日志级别将设置为DEBUG) |
SONARQUBE_LOG_ROLLING_POLICY | 设置日志滚动策略。使用time:yyyy-MM-dd进行每日轮换,size:10MB进行基于大小的轮换,或none禁用日志轮换。 | size:10MB |
SONARQUBE_LOG_MAX_FILES | 设置要保留的最大文件数。如果SONARQUBE_LOG_ROLLING_POLICY为none,此属性将被忽略。 | 3 |
SONARQUBE_MOUNTED_PROVISIONING_DIR | SonarQube初始配置目录。 | /sonarqube-provisioning |
SONARQUBE_DATA_TO_PERSIST | 相对于SonarQube安装目录的要持久化的文件。若要提供多个值,请用空格分隔。 | ${SONARQUBE_DATA_DIR} ${SONARQUBE_EXTENSIONS_DIR} ${SONARQUBE_LOGS_DIR} |
SONARQUBE_PORT_NUMBER | SonarQube Web应用程序端口号。 | 9000 |
SONARQUBE_ELASTICSEARCH_PORT_NUMBER | SonarQube Elasticsearch应用程序端口号。 | 9001 |
SONARQUBE_START_TIMEOUT | 应用程序启动超时时间(秒)。 | 300 |
SONARQUBE_SKIP_BOOTSTRAP | 是否执行应用程序的初始引导。 | no |
SONARQUBE_SKIP_MIGRATION | 当SonarQube版本更新时是否执行迁移。否则,如果跳过迁移,系统将无法运行,需手动执行步骤。 | no |
SONARQUBE_WEB_CONTEXT | 访问应用程序的SonarQube前缀。 | / |
SONARQUBE_WEB_URL | SonarQube服务器的HTTP(S) URL,例如[***]。此值用于创建电子邮件或拉取请求装饰中的链接。 | nil |
SONARQUBE_MAX_HEAP_SIZE | SonarQube服务(CE、Search和Web)的最大堆大小。 | nil |
SONARQUBE_MIN_HEAP_SIZE | SonarQube服务(CE、Search和Web)的最小堆大小。 | nil |
SONARQUBE_CE_JAVA_ADD_OPTS | 计算引擎的额外Java选项。 | nil |
SONARQUBE_ELASTICSEARCH_JAVA_ADD_OPTS | Elasticsearch的额外Java选项。 | nil |
SONARQUBE_WEB_JAVA_ADD_OPTS | Web的额外Java选项。 | nil |
SONARQUBE_EXTRA_PROPERTIES | 要在sonar.properties文件中设置的属性的逗号分隔列表,例如my.sonar.property1=property_value,my.sonar.property2=property_value。 | nil |
SONARQUBE_EXTRA_SETTINGS | 要在“管理 -> 配置 -> 常规设置”中设置的设置的逗号分隔列表,例如sonar.lf.enableGravatar=false,sonar.lf.logoUrl=[***]。 | nil |
SONARQUBE_USERNAME | SonarQube用户名。 | admin |
SONARQUBE_PASSWORD | SonarQube用户密码。 | Admin.123456 |
SONARQUBE_EMAIL | SonarQube用户电子邮件地址。 | *** |
SONARQUBE_SMTP_HOST | SonarQube SMTP服务器主机。 | nil |
SONARQUBE_SMTP_PORT_NUMBER | SonarQube SMTP服务器端口号。 | nil |
SONARQUBE_SMTP_USER | SonarQube SMTP服务器用户。 | nil |
SONARQUBE_SMTP_PASSWORD | SonarQube SMTP服务器用户密码。 | nil |
SONARQUBE_SMTP_PROTOCOL | SonarQube SMTP服务器使用的协议。 | nil |
SONARQUBE_EMAIL_FROM_ADDRESS | 电子邮件将从此地址发送,例如***。 | $SONARQUBE_EMAIL |
SONARQUBE_EMAIL_FROM_NAME | 电子邮件将从此地址名称发送,例如SonarQube。 | nil |
SONARQUBE_DATABASE_HOST | 数据库服务器主机。 | $SONARQUBE_DEFAULT_DATABASE_HOST |
SONARQUBE_DATABASE_PORT_NUMBER | 数据库服务器端口。 | 5432 |
SONARQUBE_DATABASE_NAME | 数据库名称。 | sonarqube_db |
SONARQUBE_DATABASE_USER | 数据库用户名。 | sonarqube |
SONARQUBE_DATABASE_PASSWORD | 数据库用户密码。 | nil |
SONARQUBE_PR_PLUGIN_RESOURCES_URL | 用于加载PR评论图像的基础URL。如果变量定义为空,图像链接将引用sonar.core.serverBaseURL。 | [***]{SONARQUBE_PR_PLUGIN_VERSION}/src/main/resources/static |
[!NOTE] 可以使用_FILE后缀提供环境变量。值将从环境变量指定的文件中读取,遵循标准Docker密钥处理机制。 这允许您将敏感数据(如密码)安全地注入容器,而无需直接在环境变量中公开它们。
| 名称 | 描述 | 值 |
|---|---|---|
SONARQUBE_HOME | SonarQube安装目录。 | /opt/sonarqube |
SONARQUBE_DATA_DIR | SonarQube数据文件目录。 | ${SONARQUBE_HOME}/data |
SONARQUBE_EXTENSIONS_DIR | SonarQube扩展目录。 | ${SONARQUBE_HOME}/extensions |
SONARQUBE_CONF_DIR | SonarQube配置文件目录。 | ${SONARQUBE_HOME}/conf |
SONARQUBE_CONF_FILE | SonarQube配置文件。 | ${SONARQUBE_CONF_DIR}/sonar.properties |
SONARQUBE_LOGS_DIR | SonarQube日志文件目录。 | ${SONARQUBE_HOME}/logs |
SONARQUBE_LOG_FILE | SonarQube日志文件。 | ${SONARQUBE_LOGS_DIR}/sonar.log |
SONARQUBE_TMP_DIR | SonarQube临时文件目录。 | ${SONARQUBE_HOME}/temp |
SONARQUBE_PID_DIR | SonarQube PID文件目录。 | ${SONARQUBE_HOME}/pids |
SONARQUBE_BIN_DIR | SonarQube二进制可执行文件目录。 | ${SONARQUBE_HOME}/bin/linux-x86-64 |
SONARQUBE_VOLUME_DIR | SonarQube挂载配置文件目录。 | /sonarqube |
SONARQUBE_DAEMON_USER | SonarQube系统用户。 | sonarqube |
SONARQUBE_DAEMON_USER_ID | SonarQube系统用户ID。 | 1001 |
SONARQUBE_DAEMON_GROUP | SonarQube系统组。 | sonarqube |
SONARQUBE_DAEMON_GROUP_ID | SonarQube系统组ID。 | 1001 |
SONARQUBE_DEFAULT_DATABASE_HOST | 默认数据库服务器主机。 | postgresql |
如果删除容器,所有数据都将丢失,下次运行镜像时数据库将重新初始化。为避免数据丢失,应挂载一个在容器删除后仍能持久化的卷。
为实现持久化,应在/sonarqube路径挂载目录。如果挂载的目录为空,将在首次运行时初始化。此外,还应挂载PostgreSQL数据卷以实现持久化。
若要避免意外删除卷,可以将主机目录挂载为数据卷。或者,您可以使用卷插件托管卷数据。
按照本仓库中包含的Docker Compose示例,您可以修改docker-compose.yml文件,使用主机目录而非Docker命名卷。以下是修改示例:
sonarqube-db: ... volumes: - - sonarqube_db:/var/lib/postgresql + - /path/to/sonarqube/db:/var/lib/postgresql ... sonarqube: ... volumes: - - sonarqube:/sonarqube + - /path/to/sonarqube/data:/sonarqube ... -volumes: - sonarqube_db: - driver: local - sonarqube: - driver: local
使用主机目录进行持久化时,请注意此容器以非root用户运行。因此,任何挂载的文件和目录必须具有UID 1001的正确权限。建议在首次运行Docker之前创建目录并设置正确的权限或所有权,以确保Docker不会以不兼容的权限创建它。
如果权限设置不正确,您可能会在容器日志中看到如下错误消息:mkdir: cannot create directory ‘/sonarqube/data’: Permission denied
您可以使用以下命令将所有权设置为1001:1001:
$ mkdir -p /path/to/sonarqube $ chown -R 1001:1001 /path/to/sonarqube
或者,您可以将权限设置为777(所有人可读、可写、可执行):
$ mkdir -p /path/to/sonarqube $ chmod -R 777 /path/to/sonarqube
SonarQube镜像包含健康检查命令,用于验证SonarQube Web应用程序是否正常运行。健康检查尝试连接到SonarQube,并通过查询/api/system/status端点分析应用程序状态。当应用程序状态为UP或通过health-check命令行工具的-s选项提供的任何其他状态时,健康检查将成功。
$ health-check -h 用于检查SonarQube是否健康的工具。 用法: health-check [选项] ... 部分选项包括: -u <HEALTH_CHECK_URL> 用于检查SonarQube状态的URL。(可选) -s <STATUS> 重复此选项可添加更多有效状态。可能的状态: - STARTING: 服务器初始化进行中 - UP: SonarQube实例正常运行(始终作为有效状态添加) - DOWN: 实例已启动但未运行(例如,由于迁移失败) - RESTARTING: 已请求重启 - DB_MIGRATION_NEEDED: 需要数据库迁移 - DB_MIGRATION_RUNNING: 数据库迁移进行中 -h 显示此帮助并退出 示例: - health-check - health-check -u [***] - health-check -s STARTING -s RESTARTING - health-check -s DB_MIGRATION_NEEDED -s DB_MIGRATION_RUNNING
此命令默认不运行。您可以在容器内手动运行它,或添加到编排工具(如Docker Compose、Kubernetes等)中监控SonarQube实例的健康状态。
例如,要将健康检查添加到docker-compose.yml文件,可以使用以下配置:
services: sonarqube: # ... healthcheck: test: health-check start_period: 3m start_interval: 10s interval: 1m timeout: 10s retries: 3
[!IMPORTANT] 如果SonarQube实例未完全启动(包括需要数据库迁移或迁移进行中),健康检查将失败。如果将
SONARQUBE_SKIP_MIGRATION环境变量设置为yes,建议使用-s DB_MIGRATION_NEEDED -s DB_MIGRATION_RUNNING选项将这些状态视为健康。
如果您对此镜像有任何问题或疑问,请通过GitHub issue与我联系。

免费版仅支持 Docker Hub 加速,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。
免费版仅支持 docker.io;专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等。
当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。
通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。
先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。
使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录方式配置轩辕镜像加速服务,包含7个详细步骤
在 Linux 系统上配置轩辕镜像源,支持主流发行版
在 Docker Desktop 中配置轩辕镜像加速,适用于桌面系统
在 Docker Compose 中使用轩辕镜像加速,支持容器编排
在 k8s 中配置 containerd 使用轩辕镜像加速
在宝塔面板中配置轩辕镜像加速,提升服务器管理效率
在 Synology 群晖NAS系统中配置轩辕镜像加速
在飞牛fnOS系统中配置轩辕镜像加速
在极空间NAS中配置轩辕镜像加速
在爱快ikuai系统中配置轩辕镜像加速
在绿联NAS系统中配置轩辕镜像加速
在威联通NAS系统中配置轩辕镜像加速
在 Podman 中配置轩辕镜像加速,支持多系统
配置轩辕镜像加速9大主流镜像仓库,包含详细配置步骤
无需登录即可使用轩辕镜像加速服务,更加便捷高效
需要其他帮助?请查看我们的 常见问题 或 官方QQ群: 13763429