一、拉取SonarQube镜像

docker pull sonarqube:10.4.1-community

二、修改宿主机最大内存映射区域数

临时修改,系统重启后失效

sysctl -w vm.max_map_count=262144

永久修改,编辑 /etc/sysctl.conf 文件,添加 vm.max_map_count=262144

vi /etc/sysctl.conf

三、创新SonarQube容器

docker run -d --name sonarqube -p 3400:9000 \
-e SONAR_JDBC_URL="jdbc:postgresql://172.17.0.1:5433/sonar?useUnicode=true&characterEncoding=utf-8" \
-e SONAR_JDBC_USERNAME="sonar" \
-e SONAR_JDBC_PASSWORD="sonar" \
-e SONAR_ES_BOOTSTRAP_CHECKS_DISABLE=true \
sonarqube:10.4.1-community

四、其中数据库ip建议改为宿主机ip,如果sonarqube容器启动失败,可执行以下命令查看日志:

docker logs -f -t --tail 200 sonarqube

本次部署遇到java.lang.IllegalArgumentException: Unable to create shared memory 等问题:

分析原因:查看文件权限发现之前使用root用户无法读取文件,可使用如下命令进行授权:

sudo chmod 777 /volume2/docker/sonarqube/*

再次重启sonarqube容器,容器正常,可通过http://ip:3400进行验证。

重启容器命令:

docker restart sonarqube

五、文件挂载

docker cp sonarqube:/opt/sonarqube/conf /volume2/docker/sonarqube
docker cp sonarqube:/opt/sonarqube/data /volume2/docker/sonarqube
docker cp sonarqube:/opt/sonarqube/logs /volume2/docker/sonarqube
docker cp sonarqube:/opt/sonarqube/extensions /volume2/docker/sonarqube

六、重新运行 SonarQube

docker stop sonarqube
docker rm sonarqube
docker run -d --name sonarqube -p 3400:9000 \
-v /volume2/docker/sonarqube/data:/opt/sonarqube/data \
-v /volume2/docker/sonarqube/extensions:/opt/sonarqube/extensions \
-v /volume2/docker/sonarqube/logs:/opt/sonarqube/logs \
-v /volume2/docker/sonarqube/conf:/opt/sonarqube/conf \
-e SONAR_JDBC_URL="jdbc:postgresql://172.17.0.1:5433/sonar?useUnicode=true&characterEncoding=utf-8" \
-e SONAR_JDBC_USERNAME="sonar" \
-e SONAR_JDBC_PASSWORD="sonar" \
-e SONAR_ES_BOOTSTRAP_CHECKS_DISABLE=true \
sonarqube:10.4.1-community

七、中文插件包

https://github.com/xuhuisheng/sonar-l10n-zh/releases