此页面提供用于使用 Docker 配置 SonarQube 的环境变量。以下环境变量中提供的值是默认值。
默认使用嵌入式H2数据库。建议用于测试,但不适合生产使用。支持的数据库有 Oracle、PostgreSQL 和 Microsoft SQLServer。
更改数据库连接 URL ( sonar.jdbc.url
) 可能会影响 SonarSource 许可的产品。
除非您打算在运行映像时删除数据库并重新开始,否则请注意不要使用-v
to和 ,在运行ordocker-compose down
等命令时要小心;无论您是否使用参数,您的数据库卷都不会在 SonarQube 初始启动和关闭之后持续存在。docker system prune
docker volume prune
external: true
SONAR_JDBC_USERNAME=
必须向 JDBC 用户授予创建表、索引和触发器的权限。必须首先创建架构。
SONAR_JDBC_PASSWORD=
SONAR_EMBEDDEDDATABASE_PORT=9092
H2嵌入式数据库服务器监听端口,默认9092。
SONAR_JDBC_URL=jdbc:oracle:thin:@localhost:1521/XE
必须将 Oracle JDBC 驱动程序复制到目录 extensions/jdbc-driver/oracle/ 中。仅支持瘦客户端,我们建议使用最新的 Oracle JDBC 驱动程序。
SONAR_JDBC_URL=jdbc:postgresql://localhost/sonarqube?currentSchema=my_schema
默认情况下,使用名为“public”的模式。可以使用参数“currentSchema”覆盖它。
SONAR_JDBC_URL=jdbc:sqlserver://localhost;databaseName=sonar;integratedSecurity=true
名为 sonar 的数据库必须存在,并且其排序规则必须区分大小写 (CS) 和重音敏感 (AS)。如果要使用 Microsoft SQL Server 的集成安全性,请使用此连接字符串。 如果您使用集成安全性,请勿设置 SONAR_JDBC_USERNAME
或 属性。SONAR_JDBC_PASSWORD
为了使集成安全性发挥作用,您必须下载Microsoft SQL JDBC Auth 12.2.0 包并将其复制mssql-jdbc_auth-12.2.0.x64.dll
到 SonarQube 主机的路径。
SONAR_JDBC_URL=jdbc:sqlserver://localhost;databaseName=sonar
如果您想在连接到 MS SQL Server 时使用 SQL Auth,请使用此连接字符串。 适当设置 SONAR_JDBC_USERNAME
和 。SONAR_JDBC_PASSWORD
SONAR_JDBC_MAXACTIVE=60
可以同时分配的最大活动连接数,或者负数表示没有限制。建议值为 1.2 * HTTP 池的最大大小。例如,如果以默认大小(50,请参阅属性 sonar.web.http.maxThreads
) 启用 HTTP 端口,SONAR_JDBC_MAXACTIVE
则应为 1.2 * 50 = 60。
SONAR_JDBC_MAXIDLE=5
池中可以保持空闲的最大连接数,无需释放多余的连接,或者负数表示没有限制。
SONAR_JDBC_MINIDLE=2
在不创建额外连接的情况下,池中可以保持空闲的最小连接数,或者零则不创建连接。
SONAR_JDBC_MAXWAIT=5000
池在抛出异常之前等待返回连接的最大毫秒数(当没有可用连接时),或者 <= 0 无限期等待。
SONAR_JDBC_MINEVICTABLEIDLETIMEMILLIS=600000
SONAR_JDBC_TIMEBETWEENEVICTIONRUNSMILLIS=30000
与驱逐相关的设置。
SONAR_WEB_JAVAOPTS=
Web 服务器在专用 Java 进程中执行。使用此属性可以自定义 JVM 选项。
推荐使用 HotSpot 服务器虚拟机。如果您的环境中默认情况下未启用服务器模式,则应添加属性 -server。请参阅 此处。
如果熵源缺乏熵,启动时间可能会很长。添加 -Djava.security.egd=file:/dev/./urandom 是解决该问题的一个选项。看 这里
SONAR_WEB_JAVAADDITIONALOPTS=
与之前的属性相同,但允许不重复所有其他设置,例如-Xmx
SONAR_WEB_HOST=0.0.0.0
绑定IP地址。对于具有多个 IP 地址的服务器,此属性指定将使用哪个地址来侦听指定端口。默认情况下,端口将用于与服务器关联的所有 IP 地址。
SONAR_WEB_CONTEXT=
网络上下文。设置后,它必须以正斜杠开头(例如 /sonarqube)。默认值为根上下文(空值)。
SONAR_WEB_PORT=9000
用于传入 HTTP 连接的 TCP 端口。默认值为 9000。
SONAR_WEB_HTTP_MAXTHREADS=50
服务器在任何给定时间接受和处理的最大连接数。当达到此数量时,服务器将不再接受任何连接,直到连接数量低于此值。操作系统仍可能接受基于该 SONAR_WEB_CONNECTIONS_ACCEPTCOUNT
属性的连接。默认值为 50。
SONAR_WEB_HTTP_MINTHREADS=5
最小数量的线程始终保持运行。默认值为 5。
SONAR_WEB_HTTP_ACCEPTCOUNT=25
当所有可能的请求处理线程都在使用时,传入连接请求的最大队列长度。队列已满时收到的任何请求都将被拒绝。默认值为 25。
SONAR_WEB_HTTP_KEEPALIVETIMEOUT=60000
此连接器在关闭连接之前等待另一个 HTTP 请求的毫秒数。使用值 -1 表示无(即无限)超时。默认值为 60000(毫秒)。
SONAR_AUTH_JWTBASE64HS256SECRET=
默认情况下,服务器重新启动时用户将注销并关闭会话。如果您希望保持用户会话开放,则应定义一个秘密。值是使用 base64 编码的 HS256 密钥。对于 SonarQube 的每次安装,它都必须是唯一的。命令行示例:echo -n "type
what
you_want" | openssl dgst -sha256 -hmac "key" -binary | base64
SONAR_WEB_SESSIONTIMEOUTINMINUTES=4320
用户会话的不活动超时持续时间(以分钟为单位)。在配置的时间段后,用户将注销。默认值为 3 天(4320 分钟)。该值不能小于 6 分钟或大于 3 个月(129600 分钟)。值必须严格为正。
SONAR_WEB_SYSTEMPASSCODE=
可以定义密码以从监控工具访问某些 Web 服务,而无需使用系统管理员的凭据。检查 Web API 文档以了解哪些 Web 服务支持此身份验证模式。密码应在带有“X-Sonar-Passcode”标头的 HTTP 请求中提供。默认情况下该功能被禁用。
SONAR_WEB_SSO_ENABLE=false
启用使用 HTTP 标头进行身份验证
SONAR_WEB_SSO_LOGINHEADER=X-Forwarded-Login
用于获取用户登录的标头名称。仅允许使用字母数字、“ .
”和“ ”字符@
SONAR_WEB_SSO_NAMEHEADER=X-Forwarded-Name
获取用户名的标头名称
SONAR_WEB_SSO_EMAILHEADER=X-Forwarded-Email
用于获取用户电子邮件的标头名称(可选)
SONAR_WEB_SSO_GROUPSHEADER=X-Forwarded-Groups
用于获取用户组列表的标头名称,以逗号分隔(可选)。如果设置了 SONAR SSO GROUPSHEADER,并且 SonarQube 中存在组,则用户将属于这些组。如果 SonarQube 中不存在提供的组,则用户将仅属于默认组。请注意,将始终设置默认组。
SONAR_WEB_SSO_REFRESHINTERVALINMINUTES=5
用于了解何时刷新姓名、电子邮件和组的时间间隔。在此间隔期间,如果标头中的用户名发生更改,则只会在 X 分钟后更新。
SONAR_SECURITY_REALM=LDAP
启用 LDAP 功能
SONAR_AUTHENTICATOR_DOWNCASE=true
使用不区分大小写的设置连接到 LDAP 服务器时设置为 true。
LDAP_URL=ldap://localhost:10389
LDAP 服务器的 URL。请注意,如果您使用 LDAPS,则应将服务器证书安装到 Java 信任库中。
LDAP_BINDDN=cn=sonar,ou=users,o=mycompany
绑定 DN 是要连接(或绑定)的 LDAP 用户的用户名。将此留空以匿名访问 LDAP 目录(可选)
LDAP_BINDPASSWORD=secret
绑定密码是要连接的用户的密码。将此留空以匿名访问 LDAP 目录(可选)
LDAP_AUTHENTICATION=simple
可能的值:simple | CRAM-MD5 | DIGEST-MD5 | GSSAPI
请参阅 http://java.sun.com/products/jndi/tutorial/ldap/security/auth.html (默认值simple
:)
LDAP_REALM=example.org
看 :
http://java.sun.com/products/jndi/tutorial/ldap/security/digest.html
http://java.sun.com/products/jndi/tutorial/ldap/security/crammd5.html (可选)
LDAP_CONTEXTFACTORYCLASS=com.sun.jndi.ldap.LdapCtxFactory
上下文工厂类(可选)
LDAP_STARTTLS=true
启用 StartTLS(默认false
:)
LDAP_FOLLOWREFERRALS=false
遵循或不遵循推荐。请参阅 http://docs.oracle.com/javase/jndi/tutorial/ldap/referral/jndi.html (默认值true
:)
LDAP_USER_BASEDN=cn=users,dc=example,dc=org
LDAP 中用于搜索用户的根节点的专有名称 (DN)(强制)
LDAP_USER_REQUEST=(&(objectClass=user)(sAMAccountName={login}))
LDAP 用户请求。(默认(&(objectClass=inetOrgPerson)(uid={login}))
:)
LDAP_USER_REALNAMEATTRIBUTE=name
LDAP 中定义用户真实姓名的属性。(默认cn
:)
LDAP_USER_EMAILATTRIBUTE=email
LDAP 中定义用户电子邮件的属性。(默认mail
:)
LDAP_GROUP_BASEDN=cn=groups,dc=example,dc=org
LDAP 中用于搜索组的根节点的专有名称 (DN)。(可选,默认:空)
LDAP_GROUP_REQUEST=(&(objectClass=group)(member={dn}))
LDAP 组请求(默认(&(objectClass=groupOfUniqueNames)(uniqueMember={dn}))
:)
LDAP_GROUP_IDATTRIBUTE=sAMAccountName
property 用于指定在兼容模式下返回用户组列表的属性。(默认cn
:)
SONAR_CE_JAVAOPTS=
计算引擎负责处理后台任务。
Compute Engine 在专用 Java 进程中执行。
使用以下属性来自定义 JVM 选项。
推荐使用 HotSpot 服务器虚拟机。如果您的环境默认情况下未启用服务器模式,则应添加属性 -server: http://docs.oracle.com/javase/8/docs/technotes/guides/vm/server-class.html
SONAR_CE_JAVAADDITIONALOPTS=
与之前的属性相同,但允许不重复所有其他设置,例如 -Xmx
Elasticsearch 用于促进快速、准确的信息检索。它在专用的 Java 进程中执行。
64 位系统上的 Linux 用户请确保系统上的虚拟内存已正确配置,以便 Elasticsearch 正常运行(有关详细信息,请参阅 此处 )。
当 SonarQube 独立运行时,可能会出现如下警告logs/es.log
:“ max virtual memory areas vm.maxmapcount [65530] is too low, increase to at least [262144]
”
然而,当 SonarQube 作为集群运行时,Elasticsearch 将拒绝启动。
SONAR_SEARCH_JAVAOPTS=
Elasticsearch 进程的 JVM 选项
SONAR_SEARCH_JAVAADDITIONALOPTS=
与之前的属性相同,但允许不重复所有其他设置,例如 -Xmx
SONAR_SEARCH_PORT=9001
Elasticsearch 端口。默认值为 9001。使用 0 获取空闲端口。作为安全预防措施,应被防火墙阻止并且不暴露于互联网。
SONAR_SEARCH_HOST=
Elasticsearch 主机。搜索服务器将绑定该地址,搜索客户端将连接到该地址。默认为环回地址。作为安全预防措施,不应设置为公开可用的地址。
SONAR_UPDATECENTER_ACTIVATE=true
更新中心需要互联网连接才能请求 https://update.sonarsource.org 默认情况下处于启用状态。
HTTP_PROXYHOST=
HTTP_PROXYPORT=
HTTP 代理(默认无)
HTTPS_PROXYHOST=
HTTPS_PROXYPORT=
HTTPS 代理(默认值为 HTTP PROXYHOST 和 HTTP PROXYPORT 的值)
HTTP_AUTH_NTLM_DOMAIN=
NT 域名(如果使用 NTLM 代理)
SOCKSPROXYHOST=
SOCKSPROXYPORT=
SOCKS 代理(默认无)
HTTP_PROXYUSER=
HTTP_PROXYPASSWORD=
代理身份验证(用于 HTTP、HTTPS 和 SOCKS 代理)
HTTP_NONPROXYHOSTS=
代理例外:无需通过代理即可访问的主机列表,以“|”分隔 字符,通配符“*”可用于 HTTP 和 HTTPS 的模式匹配(默认无)(注意:始终排除 localhost 及其文字符号(127.0.0.1,...))。
SonarQube 在位于同一目录的四个日志文件中生成日志(请参阅 SONAR_PATH_LOGS
下面的属性),每个进程一个:
主进程(又名应用程序)记录在 sonar.log 中
Web 服务器(又名 Web)登录 web.log
Compute Engine(又名 CE)登录 ce.log
Elasticsearch(又名 ES)登录 es.log
所有四个文件都遵循相同的滚动策略(请参阅 SONAR_LOG_ROLLINGPOLICY
和 SONAR_LOG_MAXFILES
),但它单独适用(例如,如果 SONAR_LOG_MAXFILES=4
,每个文件最多可以有 4 个,即总共 16 个文件)。
所有四个文件都具有相同格式的日志:
1 | 2 | 3 |
2016.11.16 16:47:00 INFO ce[AVht0dNXFcyiYejytc3m][ossctceworkercallableimpl] 执行任务 | 项目=org.sonarqube:example-java-maven | 类型=报告 |
4 | 5 | 6 |
id=AVht0dNXFcyiYejytc3m | 提交者=管理员 | 时间=1699ms |
1:时间戳。格式为 YYYY.MM.DD HH:MM:SS
YYYY:4 位数字的年份
MM:2 位数字的月份
DD:2 位数字
的日 HH:24 小时格式的 2 位数字的小时
MM:2 位数字的分钟
SS: 2 位数字秒
2:日志级别。可能的值(按重要性降序排列):ERROR、WARN、INFO、DEBUG 和 TRACE
3:进程标识符。可能的值:app(主)、web(Web 服务器)、ce(计算引擎)和 es(Elasticsearch)
4:SQ 线程标识符。可以为空。在 Web 服务器中,如果存在,它将是 HTTP 请求 ID。在计算引擎中,如果存在,它将是任务 ID。
5:记录器名称。通常是类的规范名称。包名称被截断以使整个字段最多 20 个字符
6:记录负载。该字段的内容不遵循任何特定格式,长度可能有所不同,并包含换行符。然而,某些日志将遵循约定以“| key=value”格式在有效负载中提供数据,特别是,分析代码片段的日志将以“| time=XXXXms”结尾。
SONAR_LOG_LEVEL=INFO
日志的全局级别(适用于所有 4 个进程)。支持的值为 INFO(默认)、DEBUG 和 TRACE
SONAR_LOG_LEVEL_APP=INFO
SONAR_LOG_LEVEL_WEB=INFO
SONAR_LOG_LEVEL_CE=INFO
SONAR_LOG_LEVEL_ES=INFO
每个进程的日志级别可以通过各自的属性单独控制。指定后,它们会覆盖全局级别定义的级别。支持的值为 INFO、DEBUG 和 TRACE
SONAR_PATH_LOGS=logs
日志文件的路径。可以是绝对目录或相对于安装目录。默认为 /logs
SONAR_LOG_ROLLINGPOLICY=time:yyyy-MM-dd
日志文件的滚动策略:
如果值以“time:”开头,则基于时间,例如按天(“time:yyyy-MM-dd”)或按月(“time:yyyy-MM”)
如果值以“size:”开头,则基于大小,例如“size:10MB”
如果值为“none”则禁用。这需要由 logrotate 等外部系统来管理日志。
SONAR_LOG_MAXFILES=7
启用滚动策略时要保留的最大文件数。
大小滚动策略的最大值为 20
无限制的准时滚动政策。设置为零以禁用旧文件清除。
SONAR_WEB_ACCESSLOGS_ENABLE=true
访问日志是服务器接收到的所有HTTP请求的列表。如果启用,它将存储在文件 { SONAR_PATH_LOGS
}/access.log 中。该文件遵循与其他日志文件相同的滚动策略(请参阅 SONAR_LOG_ROLLINGPOLICY
和 SONAR_LOG_MAXFILES
)。
SONAR_WEB_ACCESSLOGS_PATTERN=%i{X-Forwarded-For} %l %u [%t] "%r" %s %b "%i{Referer}" "%i{User-Agent}" "%reqAttribute{ID}"
访问日志的格式。如果 则被忽略 SONAR_WEB_ACCESSLOGS_ENABLE=false
。
可能的值为:
common
:通用日志格式,快捷方式:%h %l %u %user %date "%r" %s %b
combined
:另一种广泛认可的格式,快捷方式:%h %l %u [%t] "%r" %s %b "%i{Referer}" "%i{User-Agent}"
否则,自定义模式:请参阅 http://logback.qos.ch/manual/layouts.html#AccessPatternLayout。
经过身份验证的用户登录不是用"%u"
而是用"%reqAttribute{LOGIN}"
(自版本 6.1 起)实现。
为匿名用户显示的值为“ -
”。
"%reqAttribute{TOKEN_NAME}"
如果添加了(自版本 9.5 起),则用于请求的令牌名称将添加到访问日志中。
SonarQube 的 HTTP 请求 ID 可以添加到模式中"%reqAttribute{ID}"
(自版本 6.2 起)。
如果 SonarQube 位于反向代理后面,则以下值允许显示正确的远程 IP 地址:
默认值(在版本 6.2 之前为“组合”)相当于“组合 + SQ HTTP 请求 ID”:
SONAR_WEB_ACCESSLOGS_PATTERN=%h %l %u [%t] "%r" %s %b "%i{Referer}" "%i{User-Agent}" "%reqAttribute{ID}"
SONAR_CLUSTER_NAME=sonarqube
集群的名称。如果同一网络上存在多个集群,则为必需。例如,这可以防止混合生产和预生产集群。这将是存储在 Hazelcast 集群中的名称,并用作 Elasticsearch 集群的名称。
SONAR_CLUSTER_SEARCH_HOSTS
集群中搜索主机的逗号分隔列表。该列表可以包含主机或主机和端口,但不能同时包含两者。项目格式 ip/hostname
仅适用于主机或ip/hostname:port
适用于主机和端口。 ip/hostname
也可以设置为搜索容器的服务名称。
SONAR_CLUSTER_SEARCH_PASSWORD
将在客户端站点上使用的 Elasticsearch 内置用户 (elastic) 的密码。如果提供,它将启用身份验证。该属性需要在整个集群中设置为相同的值。
SONAR_CLUSTER_ES_HOSTS
集群中搜索主机的逗号分隔列表。该列表可以包含主机或主机和端口,但不能同时包含两者。项目格式为 ip/hostname
仅主机或ip/hostname:port
主机和端口,同时 ip/hostname
也可以设置为搜索容器的服务名称。
SONAR_CLUSTER_NODE_NAME
在 Elasticsearch 上使用并存储在 Hazelcast 成员属性 (NODE_NAME) 中的节点名称
SONAR_CLUSTER_ES_SSL_KEYSTORE
PKCS#12 格式的密钥库的文件路径。可以是与 SONAR_CLUSTER_ES_SSL_TRUSTSTORE
. 运行 SonarQube 的用户必须具有该文件的读取权限。如果提供密码,则为必填项。
SONAR_CLUSTER_ES_SSL_KEYSTOREPASSWORD
密钥库的密码。
SONAR_CLUSTER_ES_SSL_TRUSTSTORE
PKCS#12 格式的信任库的文件路径。可以是与 SONAR_CLUSTER_ES_SSL_KEYSTORE
. 运行 SonarQube 的用户必须具有该文件的读取权限。如果提供密码,则为必填项。
SONAR_CLUSTER_ES_SSL_TRUSTSTOREPASSWORD
信任库的密码。
SONAR_CLUSTER_HOSTS
集群中所有应用程序主机的逗号分隔列表 。该值必须仅包含 应用程序主机。SONAR_CLUSTER_NODE_PORT
如果不使用默认值,列表中的每一项都必须包含端口 。项目格式为 ip/hostname
, ip/hostname:port
. ip/hostname
也可以设置为应用程序容器的服务名称。
SONAR_CLUSTER_NODE_PORT
用于与集群中每个应用程序成员进行通信的 Hazelcast 端口。默认: 9003
SONAR_NOTIFICATIONS_DELAY=60
处理通知队列之间的延迟(以秒为单位)。默认值为 60 秒。
SONAR_PATH_DATA=data
SONAR_PATH_TEMP=temp
持久数据文件(嵌入式数据库和搜索索引)和临时文件的路径。可以是绝对目录或相对于安装目录。默认值分别为 /data 和 /temp
SONAR_TELEMETRY_ENABLE=true
遥测 - 共享匿名 SonarQube 统计数据。通过分享匿名 SonarQube 统计数据,您可以帮助我们了解 SonarQube 的使用方式,以便我们改进产品,更好地为您服务。我们不收集源代码或 IP 地址。我们不与其他人共享数据。
Copyright © 2022 All Rights Reserved. 地址:上海市浦东新区崮山路538号808 苏ICP123456 XML地图