SonarQube™ 是一款开源代码质量管理平台,用于分析和度量代码的技术质量。它能帮助开发人员在早期阶段检测代码问题、安全漏洞和缺陷,支持多种编程语言,提供可操作的质量报告,是持续集成和代码审查流程中的关键工具。
Bitnami SonarQube™ 镜像是基于 Bitnami 安全镜像标准构建的容器化部署方案,具备以下特点:
自 2025 年 8 月 28 日起,Bitnami 将升级公共镜像目录,推出 Bitnami Secure Images 计划,聚焦安全加固镜像:
docker.io/bitnamilegacy 仓库,不再接收更新详情参见 Bitnami Secure Images 公告。
Bitnami SonarQube™ 镜像提供多种标签,支持不同版本和操作系统。标签策略遵循 Bitnami 标准,分为滚动标签(如 latest)和不可变标签(如特定版本号)。具体标签列表及对应 Dockerfile 链接可通过以下途径获取:
推荐通过 Docker Hub 获取预构建镜像:
console# 获取最新版 docker pull bitnami/sonarqube:latest # 获取特定版本(如存在) docker pull bitnami/sonarqube:[TAG] # 替换 [TAG] 为具体版本号
从 GitHub 仓库克隆源码并构建:
consolegit clone [***] cd bitnami/sonarqube/[VERSION]/[OS] # 替换 [VERSION] 和 [OS] 为具体值 docker build -t bitnami/sonarqube:latest .
SonarQube™ 依赖 PostgreSQL 数据库存储数据,以下示例使用 Bitnami PostgreSQL 镜像作为数据库。
consoledocker network create sonarqube-network
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
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)。
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
consoledocker-compose up -d
注意:此 Compose 配置仅用于开发/测试,生产环境需使用 Bitnami Helm Chart。
为避免容器删除导致数据丢失,需持久化 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.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:
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
| 变量名 | 描述 | 默认值 |
|---|---|---|
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 | 管理员*** | *** |
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(无默认值) |
| 变量名 | 描述 | 值 |
|---|---|---|
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 |
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 \

来自真实用户的反馈,见证轩辕镜像的优质服务
免费版仅支持 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 登录认证访问私有仓库
在 Linux 系统配置镜像加速服务
在 Docker Desktop 配置镜像加速
Docker Compose 项目配置加速
Kubernetes 集群配置 Containerd
在宝塔面板一键配置镜像加速
Synology 群晖 NAS 配置加速
飞牛 fnOS 系统配置镜像加速
极空间 NAS 系统配置加速服务
爱快 iKuai 路由系统配置加速
绿联 NAS 系统配置镜像加速
QNAP 威联通 NAS 配置加速
Podman 容器引擎配置加速
HPC 科学计算容器配置加速
ghcr、Quay、nvcr 等镜像仓库
无需登录使用专属域名加速
需要其他帮助?请查看我们的 常见问题 或 官方QQ群: 13763429