docker部署SonarQube流程及相关问题汇总
环境说明:
sonarqube版本:10.4.1-community
PostgreSql版本:14.1
系统环境:centos7.6(x86_64)
部署流程
1、PostgreSql的安装部署
在docker中拉取最新版本镜像,命令如下:
docker pull postgres
镜像拉取成功后执行如下命令创建PostgreSql容器:
docker run --name postgres -e POSTGRES_PASSWORD=sonar123 -p 5432:5432 -v /home/zx/postgres/data:/var/lib/postgresql/data -d postgres
其中数据库用户名为:postgres,密码为:sonar123,端口为5432,挂载本地磁盘路径为:/home/zx/postgres/data,镜像名称为:postgres
创建成功后使用docker ps查看postgres容器是否正常启动,并通过数据库客户端工具进行连接验证。
2、创建sonar用户
连接数据库后执行如下SQL语句:
DROP DATABASE IF EXISTS sonarqube; CREATE DATABASE sonarqube WITH ENCODING = 'UTF8'; CREATE USER sonarqube WITH PASSWORD 'sonarqube'; GRANT ALL PRIVILEGES ON DATABASE sonarqube TO sonarqube; GRANT ALL PRIVILEGES ON all tables in schema public TO sonarqube;
初始化PostgreSQL数据库,创建sonarqube数据库及用户,并关联授权,通过客户端可登录sonarqube数据库,如下图所示。
3、SonarQube安装部署
拉取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 9000:9000 \ -v /opt/sonarqube/data:/opt/sonarqube/data \ -v /opt/sonarqube/extensions:/opt/sonarqube/extensions \ -v /opt/sonarqube/logs:/opt/sonarqube/logs \ -v /opt/sonarqube/temp:/opt/sonarqube/temp \ -e SONAR_JDBC_URL="jdbc:postgresql://127.0.0.1:5432/sonarqube?useUnicode=true&characterEncoding=utf-8" \ -e SONAR_JDBC_USERNAME="sonarqube" \ -e SONAR_JDBC_PASSWORD="sonarqube" \ -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 /opt/sonarqube/*
再次重启sonarqube容器,容器正常,可通过http://ip:9000进行验证。
重启容器命令:
docker restart sonarqube
原创帖,转载请注明出处及作者,标注严禁转载帖请勿转载,谢谢!