bitnami/sonarqubeSonarQube™ 是一款开源代码质量管理平台,用于分析和度量代码的技术质量。它能帮助开发人员在早期阶段检测代码问题、安全漏洞和缺陷,支持多种编程语言,提供可操作的质量报告,是持续集成和代码审查流程中的关键工具。
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 \




manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务