Docker Compose部署sonarqube:lts-community启动失败求助
问题根因
启动失败是SonarQube内置Elasticsearch的系统校验不通过导致的。Elasticsearch要求宿主机内核参数vm.max_map_count(进程最大虚拟内存映射区域数)最低为262144,你当前宿主机该参数默认值为65530,不满足最低要求,触发bootstrap检查失败,ES进程直接退出,最终SonarQube服务终止。这个问题和PostgreSQL服务、docker-compose业务配置无关,属于宿主机系统内核参数配置问题。
解决操作
临时生效方案(重启宿主机后失效,适合快速验证)
在部署Docker的宿主机终端直接执行命令调整参数:
sysctl -w vm.max_map_count=262144
执行完参数立即生效,直接重启SonarQube容器即可正常启动。
永久生效方案(重启宿主机不失效,生产环境推荐)
- 编辑宿主机系统内核参数配置文件:
vim /etc/sysctl.conf
- 在文件末尾新增一行配置:
vm.max_map_count=262144
- 保存退出后,执行命令加载配置使其立即生效:
sysctl -p
配置校验
执行以下命令查看参数当前值,返回vm.max_map_count = 262144即为配置正确:
sysctl vm.max_map_count
服务重启
参数配置完成后,在Portainer中重启SonarQube容器,或者在docker-compose.yml所在目录执行以下命令重启服务栈:
docker-compose up -d
等待1-2分钟服务初始化完成,即可通过9901端口正常访问SonarQube。
额外配置修正
你当前的docker-compose文件中PostgreSQL的挂载路径存在版本适配问题:你使用的是Postgres 14版本,默认数据目录为/var/lib/postgresql/data,配置中写的/var/lib/postgresql10是Postgres 10版本的路径,会导致数据持久化异常,建议将sonar_db服务的volumes配置修改为:
volumes: - sonarqube_db:/var/lib/postgresql - postgresql_data:/var/lib/postgresql/data
内容的提问来源于stack exchange,提问作者Atilla Sen
相关产品推荐
相关产品推荐

