SonarQube™ 是一款开源代码质量管理平台,用于分析和度量代码的技术质量。它能帮助开发人员在早期阶段检测代码问题、安全漏洞和缺陷,支持多种编程语言,提供可操作的质量报告,是持续集成和代码审查流程中的关键工具。
Bitnami SonarQube™ 镜像是基于 Bitnami 安全镜像标准构建的容器化部署方案,具备以下特点:
自 2025 年 8 月 28 日起,Bitnami 将升级公共镜像目录,推出 Bitnami Secure Images 计划,聚焦安全加固镜像:
docker.io/bitnamilegacy 仓库,不再接收更新详情参见 https://github.com/bitnami/containers/issues/83267%E3%80%82
Bitnami SonarQube™ 镜像提供多种标签,支持不同版本和操作系统。标签策略遵循 Bitnami 标准,分为滚动标签(如 latest)和不可变标签(如特定版本号)。具体标签列表及对应 Dockerfile 链接可通过以下途径获取:
推荐通过 Docker Hub 获取预构建镜像:
console# 获取最新版 docker pull bitnami/sonarqube:latest # 获取特定版本(如存在) docker pull bitnami/sonarqube:[TAG] # 替换 [TAG] 为具体版本号
从 GitHub 仓库克隆源码并构建:
consolegit clone https://github.com/bitnami/containers.git cd bitnami/sonarqube/[VERSION]/[OS] # 替换 [VERSION] 和 [OS] 为具体值 docker build -t bitnami/sonarqube:latest .
SonarQube™ 依赖 PostgreSQL 数据库存储数据,以下示例使用 Bitnami PostgreSQL 镜像作为数据库。
步骤 1:创建网络
consoledocker network create sonarqube-network
步骤 2:启动 PostgreSQL 容器
console# 创建持久化卷 docker volume create postgresql_data # 启动 PostgreSQL(允许空密码仅用于开发) docker run -d --name postgresql \ --env ALLOW_EMPTY_PASSWORD=yes \ --env POSTGRESQL_USERNAME=bn_sonarqube \ --env POSTGRESQL_PASSWORD=bitnami \ --env POSTGRESQL_DATABASE=bitnami_sonarqube \ --network sonarqube-network \ --volume postgresql_data:/bitnami/postgresql \ bitnami/postgresql:latest
步骤 3:启动 SonarQube™ 容器
console# 创建持久化卷 docker volume create sonarqube_data # 启动 SonarQube™ docker run -d --name sonarqube \ -p 8080:9000 # 映射容器内 9000 端口到主机 8080 --env ALLOW_EMPTY_PASSWORD=yes \ --env SONARQUBE_DATABASE_USER=bn_sonarqube \ --env SONARQUBE_DATABASE_PASSWORD=bitnami \ --env SONARQUBE_DATABASE_NAME=bitnami_sonarqube \ --env SONARQUBE_DATABASE_HOST=postgresql \ --network sonarqube-network \ --volume sonarqube_data:/bitnami/sonarqube \ bitnami/sonarqube:latest
访问应用:http://<主机IP>:8080(默认凭据:admin/bitnami)。
步骤 1:创建 docker-compose.yml
yamlversion: '2' services: postgresql: image: bitnami/postgresql:latest volumes: - postgresql_data:/bitnami/postgresql environment: - ALLOW_EMPTY_PASSWORD=yes - POSTGRESQL_USERNAME=bn_sonarqube - POSTGRESQL_PASSWORD=bitnami - POSTGRESQL_DATABASE=bitnami_sonarqube sonarqube: image: bitnami/sonarqube:latest ports: - '8080:9000' volumes: - sonarqube_data:/bitnami/sonarqube environment: - ALLOW_EMPTY_PASSWORD=yes - SONARQUBE_DATABASE_HOST=postgresql - SONARQUBE_DATABASE_PORT_NUMBER=5432 - SONARQUBE_DATABASE_USER=bn_sonarqube - SONARQUBE_DATABASE_PASSWORD=bitnami - SONARQUBE_DATABASE_NAME=bitnami_sonarqube depends_on: - postgresql volumes: postgresql_data: driver: local sonarqube_data: driver: local
步骤 2:启动服务
consoledocker-compose up -d
注意:此 Compose 配置仅用于开发/测试,生产环境需使用 https://github.com/bitnami/charts/tree/main/bitnami/sonarqube%E3%80%82
为避免容器删除导致数据丢失,需持久化 SonarQube 和 PostgreSQL 的数据目录。
通过 docker volume 创建卷并挂载,卷由 Docker 管理,安全性更高:
console# PostgreSQL 卷(已在 7.1 中示例) docker volume create postgresql_data # SonarQube 卷(已在 7.1 中示例) docker volume create sonarqube_data
将主机目录直接挂载到容器,需确保目录权限正确(非 root 容器依赖 UID 1001):
Docker Compose 配置
修改 docker-compose.yml 中的 volumes 部分:
diffservices: postgresql: volumes: - - postgresql_data:/bitnami/postgresql + - /path/to/host/postgresql:/bitnami/postgresql # 替换为实际主机路径 sonarqube: volumes: - - sonarqube_data:/bitnami/sonarqube + - /path/to/host/sonarqube:/bitnami/sonarqube # 替换为实际主机路径 -volumes: - postgresql_data: - sonarqube_data:
Docker 命令行
console# 启动 PostgreSQL docker run -d --name postgresql \ --network sonarqube-network \ --volume /path/to/host/postgresql:/bitnami/postgresql \ # 主机目录 [其他环境变量] \ bitnami/postgresql:latest # 启动 SonarQube™ docker run -d --name sonarqube \ --network sonarqube-network \ --volume /path/to/host/sonarqube:/bitnami/sonarqube \ # 主机目录 [其他环境变量] \ bitnami/sonarqube:latest
9.1.1 可定制环境变量
| 变量名 | 描述 | 默认值 |
|---|---|---|
SONARQUBE_MOUNTED_PROVISIONING_DIR | 初始配置文件挂载目录 | /bitnami/sonarqube-provisioning |
SONARQUBE_DATA_TO_PERSIST | 需持久化的文件路径(相对于安装目录,空格分隔多值) | ${SONARQUBE_DATA_DIR} ${SONARQUBE_EXTENSIONS_DIR} |
SONARQUBE_PORT_NUMBER | Web 应用端口 | 9000 |
SONARQUBE_ELASTICSEARCH_PORT_NUMBER | Elasticsearch 端口 | 9001 |
SONARQUBE_START_TIMEOUT | 应用启动超时时间(秒) | 300 |
SONARQUBE_SKIP_BOOTSTRAP | 是否跳过初始引导(如数据库已有数据时需设为 yes) | no |
SONARQUBE_WEB_CONTEXT | 应用访问前缀(如 /sonarqube) | / |
SONARQUBE_MAX_HEAP_SIZE | 服务最大堆内存(CE、Search、Web) | nil(无默认值) |
SONARQUBE_MIN_HEAP_SIZE | 服务最小堆内存(CE、Search、Web) | nil(无默认值) |
SONARQUBE_ELASTICSEARCH_JAVA_ADD_OPTS | Elasticsearch 额外 Java 参数 | nil(无默认值) |
SONARQUBE_EXTRA_PROPERTIES | sonar.properties 额外属性(格式:key1=val1,key2=val2) | nil(无默认值) |
SONARQUBE_USERNAME | 管理员用户名 | admin |
SONARQUBE_PASSWORD | 管理员密码 | bitnami |
SONARQUBE_EMAIL | 管理员*** | user@example.com |
SONARQUBE_SMTP_HOST | SMTP 服务器地址(用于邮件通知) | nil(无默认值) |
SONARQUBE_SMTP_PORT_NUMBER | SMTP 端口 | nil(无默认值) |
SONARQUBE_SMTP_USER | SMTP 用户名 | nil(无默认值) |
SONARQUBE_SMTP_PASSWORD | SMTP 密码 | nil(无默认值) |
SONARQUBE_SMTP_PROTOCOL | SMTP 协议(如 tls) | nil(无默认值) |
SONARQUBE_DATABASE_HOST | 数据库主机地址 | postgresql(默认连接名为 postgresql 的容器) |
SONARQUBE_DATABASE_PORT_NUMBER | 数据库端口 | 5432 |
SONARQUBE_DATABASE_NAME | 数据库名称 | bitnami_sonarqube |
SONARQUBE_DATABASE_USER | 数据库用户名 | bn_sonarqube |
SONARQUBE_DATABASE_PASSWORD | 数据库密码 | nil(无默认值) |
9.1.2 只读环境变量(不可修改)
| 变量名 | 描述 | 值 |
|---|---|---|
SONARQUBE_BASE_DIR | 安装目录 | ${BITNAMI_ROOT_DIR}/sonarqube |
SONARQUBE_DATA_DIR | 数据目录 | ${SONARQUBE_BASE_DIR}/data |
SONARQUBE_EXTENSIONS_DIR | 扩展目录 | ${SONARQUBE_BASE_DIR}/extensions |
SONARQUBE_CONF_DIR | 配置文件目录 | ${SONARQUBE_BASE_DIR}/conf |
SONARQUBE_CONF_FILE | 主配置文件 | ${SONARQUBE_CONF_DIR}/sonar.properties |
SONARQUBE_LOGS_DIR | 日志目录 | ${SONARQUBE_BASE_DIR}/logs |
SONARQUBE_LOG_FILE | 主日志文件 | ${SONARQUBE_LOGS_DIR}/sonar.log |
SONARQUBE_TMP_DIR | 临时文件目录 | ${SONARQUBE_BASE_DIR}/temp |
SONARQUBE_PID_FILE | PID 文件路径 | ${SONARQUBE_BASE_DIR}/pids/SonarQube.pid |
SONARQUBE_BIN_DIR | 可执行文件目录 | ${SONARQUBE_BASE_DIR}/bin/linux-x86-64 |
SONARQUBE_VOLUME_DIR | 挂载配置目录 | ${BITNAMI_VOLUME_DIR}/sonarqube |
SONARQUBE_DAEMON_USER | 运行用户 | sonarqube |
SONARQUBE_DAEMON_USER_ID | 运行用户 UID | 1001 |
SONARQUBE_DAEMON_GROUP | 运行用户组 | sonarqube |
SONARQUBE_DAEMON_GROUP_ID | 运行用户组 GID | 1001 |
SONARQUBE_CE_JAVA_ADD_OPTS | 计算引擎额外 Java 参数 | ${SONARQUBE_CE_JAVA_ADD_OPTS:-} ${JAVA_TOOL_OPTIONS:-} |
SONARQUBE_WEB_JAVA_ADD_OPTS | Web 服务额外 Java 参数 | ${SONARQUBE_WEB_JAVA_ADD_OPTS:-} ${JAVA_TOOL_OPTIONS:-} |
SONARQUBE_DEFAULT_DATABASE_HOST | 默认数据库主机 | postgresql |
示例 1:配置 SMTP(Gmail)
consoledocker run -d --name sonarqube \ -p 8080:9000 \ --network sonarqube-network \ --env SONARQUBE_DATABASE_HOST=postgresql \ --env SONARQUBE_DATABASE_USER=bn_sonarqube \ --env SONARQUBE_DATABASE_PASSWORD=bitnami \ --env SONARQUBE_DATABASE_NAME=bitnami_sonarqube \ --env SONARQUBE_SMTP_HOST=smtp.gmail.com \ --env SONARQUBE_SMTP_PORT_NUMBER=587 \
以下是 bitnami/sonarqube 相关的常用 Docker 镜像,适用于 不同场景 等不同场景:
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。




探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
无需登录使用专属域名
Kubernetes 集群配置 Containerd
K3s 轻量级 Kubernetes 镜像加速
VS Code Dev Containers 配置
Podman 容器引擎配置
HPC 科学计算容器配置
ghcr、Quay、nvcr 等镜像仓库
Harbor Proxy Repository 对接专属域名
Portainer Registries 加速拉取
Nexus3 Docker Proxy 内网缓存
需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单
docker search 限制
站内搜不到镜像
离线 save/load
插件要用 plugin install
WSL 拉取慢
安全与 digest
新手拉取配置
镜像合规机制
manifest unknown
no matching manifest(架构)
invalid tar header(解压)
TLS 证书失败
DNS 超时
域名连通性排查
410 Gone 排查
402 与流量用尽
401 认证失败
429 限流
D-Bus 凭证提示
413 与超大单层
来自真实用户的反馈,见证轩辕镜像的优质服务