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

 

 



 

 
posted @ 2024-04-27 20:22  一点空白  阅读(99)  评论(0编辑  收藏  举报