環境說明:
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