1. 程式人生 > 實用技巧 >Docker執行sonarqube-(程式碼質量檢測平臺)

Docker執行sonarqube-(程式碼質量檢測平臺)

sonarqube是什麼

SonarQube是用於持續檢查程式碼質量的開源平臺。
可用於持續整合,持續部署流程中的程式碼檢測環節。
idea和jenkins都提供了外掛配合使用。

liunx推薦配置環境

liunx環境配置不合適的話,啟動時會報錯!
我後面的一個啟動時報錯就是沒有達到要求的配置導致的。

sysctl -w vm.max_map_count=262144
sysctl -w fs.file-max=65536
ulimit -n 65536
ulimit -u 4096

docker-compose.yml


version: '3.1'
services:
 db:
  image: postgres
  container_name: postgres
  restart: always
 db:
  image: postgres
  container_name: postgres
  restart: always
  ports:
   - 5432:5432
  environment:
   POSTGRES_USER: postgres
   POSTGRES_PASSWORD: 123456
   POSTGRES_DB: sonar
   PGDATA: /var/lib/postgresql/data/pgdata
  volumes:
   - /usr/local/docker/postgre/data:/var/lib/postgresql/data/pgdata
 sonarqube:
  image: sonarqube
  container_name: sonarqube
  restart: always
  ports:
   - 8007:9000
  environment:
   sonar.jdbc.username: postgres
   sonar.jdbc.password: 123456
   sonar.jdbc.url: jdbc:postgresql://db:5432/sonar
  links:
   - db
  volumes:
   - /usr/local/docker/sonarqube/conf:/opt/sonarqube/conf
   - /usr/local/docker/sonarqube/extensions:/opt/sonarqube/extensions
   - /usr/local/docker/sonarqube/logs:/opt/sonarqube/logs
   - /usr/local/docker/sonarqube/data:/opt/sonarqube/data


首先部署PostgreSQL資料,也可以使用其他資料庫。預設情況下,映像將使用不適合生產的嵌入式H2資料庫。
H2是一個記憶體資料庫,重啟後資料就沒有了。
推薦使用其他資料庫。

配置說明

環境變數配置:
sonar.jdbc.username : 資料庫賬號
sonar.jdbc.password : 資料庫密碼
sonar.jdbc.url: jdbc : 資料庫連線驅動
對映配置:
/opt/sonarqube/conf : 配置檔案,例如 sonar.properties
/opt/sonarqube/data:資料檔案,例如嵌入式H2資料庫和Elasticsearch索引
/opt/sonarqube/logs:包含有關訪問,Web程序,CE程序,Elasticsearch日誌的SonarQube日誌
/opt/sonarqube/extensions:外掛,例如語言分析器 經提供了支援的資料庫(Oracle除外)的驅動程式。不要更換提供的驅動程式;他們是唯一受支援的。對於Oracle,請將JDBC驅動程式複製到中$SONARQUBE_HOME/extensions/jdbc-driver/oracle。

遇到的問題1

docker-compose up -d

啟動時報錯:

解決方案

賦許可權:

chmod -R 777 /usr/local/docker/sonarqube

遇到的問題2

啟動時報錯:

max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]

解決方案

切換到root使用者

執行命令:
sysctl -w vm.max_map_count=262144

檢視結果:
sysctl -a|grep vm.max_map_count

顯示:
vm.max_map_count = 262144

上述方法修改之後,如果重啟虛擬機器將失效,所以:

解決辦法:
在 /etc/sysctl.conf檔案最後新增一行

vm.max_map_count=262144

即可永久修改

輸入地址

成功!