1. 程式人生 > 實用技巧 >通過docker方式安裝sonarqube

通過docker方式安裝sonarqube

  Sonar 是一個用於程式碼質量管理的開源平臺,用於管理原始碼的質量 通過外掛形式,可以支援包括 java,C#,C/C++,PL/SQL,Cobol,JavaScrip,Groovy 等等。sonar服務搭建有很多種方式,本文介紹通過docker方式安裝sonar伺服器的流程,以供參考。

  1、本次所使用的伺服器相關資訊簡單羅列

    伺服器使用CenterOS 7(需連線網際網路,本文使用yum方式安裝,方便快捷),

    JDK版本為JDK11(sonar對JDK的支援從7.7之後均為JDK11)

  2、docker安裝,依次執行如下命令

  • sudo yum install -y yum-utils \
          device-mapper-persistent-data \
          lvm2
  • sudo yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo
  • sudo yum-config-manager --enable docker-ce-nightly  
  • sudo yum install docker-ce docker-ce-cli containerd.io

  3、安裝docker-compose,依次執行如下命令

  • sudo curl -L "https://github.com/docker/compose/releases/download/1.26.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
    

      

  • sudo chmod +x /usr/local/bin/docker-compose

  4、安裝sonar(本文使用版本為8.2,sonar定期對docker映象檔案進行更新,如需獲取更多版本訪問https://hub.docker.com/_/sonarqube)

  安裝前需啟動docker服務

systemctl daemon-reload

systemctl restart docker.service

#啟動docker
$systemctlstartdocker

#拉取postgres映象
$dockerpullpostgres

#拉取sonarqube映象
$dockerpullsonarqube

#檢視下載的映象
$dockerimages

  然後使用命令docker-compose -f docker-compose.yml up

# 構建並後臺啟動容器
$ docker-compose up -d

# 檢視執行容器
$ docker-compose ps
或
$ docker ps

# 動態檢視日誌
$ docker-compose logs -f
或
$ docker logs -f sonar

# 重啟
$ docker-compose restart

  docker-compose.yml檔案存放在伺服器執行命令當前目錄,該檔案內容如下

version: "2"

services:
  sonarqube:
    image: sonarqube:8.2-community
    depends_on:
      - db
    ports:
      - "9000:9000"
    networks:
      - sonarnet
    environment:
      SONAR_JDBC_URL: jdbc:postgresql://db:5432/sonar
      SONAR_JDBC_USERNAME: sonar
      SONAR_JDBC_PASSWORD: sonar
    volumes:
      - sonarqube_data:/opt/sonarqube/data
      - sonarqube_extensions:/opt/sonarqube/extensions
      - sonarqube_logs:/opt/sonarqube/logs
      - sonarqube_temp:/opt/sonarqube/temp
  db:
    image: postgres
    networks:
      - sonarnet
    environment:
      POSTGRES_USER: sonar
      POSTGRES_PASSWORD: sonar
    volumes:
      - postgresql:/var/lib/postgresql
      # This needs explicit mapping due to https://github.com/docker-library/postgres/blob/4e48e3228a30763913ece952c611e5e9b95c8759/Dockerfile.template#L52
      - postgresql_data:/var/lib/postgresql/data

networks:
  sonarnet:
    driver: bridge

volumes:
  sonarqube_data:
  sonarqube_extensions:
  sonarqube_logs:
  sonarqube_temp:
  postgresql:
  postgresql_data:

  5、訪問sonar及使用maven進行檢查

    登入使用http://x.x.x.x:9000/
    使用者名稱/密碼:admin/admin

  maven檢查可配置settings.xml檔案,配置內容如下

    <profile>
        <id>sonar</id>
			<activation>
			   <activeByDefault>true</activeByDefault>
			</activation>
			<properties>
			   
			   <sonar.login>admin</sonar.login>
			   
			  <sonar.password>admin</sonar.password>
			  
			  <sonar.host.url>http://x.x.x.x:9000</sonar.host.url>
			  
			  <sonar.inclusions>**/*.java</sonar.inclusions>
		  </properties>   
	</profile> 
	<activeProfiles>
		<activeProfile>sonar</activeProfile>
	</activeProfiles>

  cmd到需要掃描工程目錄下,首先需要所掃描工程通過maven編譯,然後執行sonar掃描,依次執行如下命令

  • mvn clean install
    //BUILD SUCCESS之後執行下條命令
  • mvn sonar:sonar
    //BUILD SUCCESS之後,瀏覽器訪問sonar服務,掃描結果可能需要後臺分析一會才會呈現出來。

到此,docker安裝sonar及maven掃描java程式碼就完成了,希望能對你有所幫助,感謝閱讀。