Ubuntu 20.4(WSL)下Docker Compose部署SonarQube停止问题求助
解决WSL2 Ubuntu 20.04中Docker部署SonarQube启动后停止的问题
问题原因
SonarQube启动前会校验系统资源限制(虚拟内存、文件句柄数、进程数),当主机系统不满足最低要求时,SonarQube会主动退出(退出码0),日志显示SonarQube is stopped。你执行参数调整命令时权限不足,是因为这类系统级操作需要root权限。
解决步骤
1. 临时调整系统参数(立即生效,重启WSL后失效)
用sudo获取root权限执行sysctl命令:
sudo sysctl -w vm.max_map_count=524288 sudo sysctl -w fs.file-max=131072
临时设置当前会话的ulimit:
ulimit -n 131072 ulimit -u 8192
2. 永久生效系统参数(重启WSL后依然有效)
配置sysctl参数
编辑/etc/sysctl.conf文件,添加以下内容:
vm.max_map_count=524288 fs.file-max=131072
执行命令让配置立即生效:
sudo sysctl -p
配置WSL启动自动加载参数(针对WSL2)
编辑/etc/wsl.conf文件(不存在则创建),添加启动命令:
[boot] command = "sysctl -w vm.max_map_count=524288 && sysctl -w fs.file-max=131072"
保存后在Windows终端执行wsl --shutdown重启WSL,配置即可生效。
3. 在Docker Compose中配置容器资源限制(推荐)
直接在docker-compose.yml的SonarQube服务节点添加ulimit配置,无需修改主机系统limits:
services: sonarqube: image: sonarqube:latest # 保留原有端口、环境变量等配置 ulimits: nofile: soft: 131072 hard: 131072 nproc: soft: 8192 hard: 8192 depends_on: - postgresql postgresql: # 保留原有PostgreSQL配置
4. 重启服务验证
停止当前容器,重启Docker后重新启动服务:
docker compose down sudo systemctl restart docker docker compose up -d
查看SonarQube容器日志确认启动状态:
docker logs <sonarqube容器名或ID>
内容的提问来源于stack exchange,提问作者Bill
相关产品推荐
相关产品推荐

