SonarQube (ㄧ) 在MAC OS上透過Docker建置環境

網路上已有多位前輩分享相關於SonarQube的介紹,
故小弟就不在此多做贅述,會再參考連結附上相關的文章說明.
主要是再MAC上的docker架設SonarQube做個記事.
如果有誤或有需要補充的地方也勞請前輩不吝指教.

系統環境:MAC OS Version 10.14.2

Docker Compose File
依照官方提供的文件如下
 

version: "2"
services:
  sonarqube:
    image: sonarqube
    ports:
      - "9000:9000"
    networks:
      - sonarnet
    environment:
      - sonar.jdbc.url=jdbc:postgresql://db:5432/sonar
    volumes:
      - sonarqube_conf:/opt/sonarqube/conf
      - sonarqube_data:/opt/sonarqube/data
      - sonarqube_extensions:/opt/sonarqube/extensions

  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_conf:
  sonarqube_data:
  sonarqube_extensions:
  postgresql:
  postgresql_data:

若是在Linux(本魯測試的環境Linux Mint)的環境上,執行是沒什麼問題的直接執行指令也可正常運行.
但是在MAC上volume的掛載卻找不到對應的實體路徑.如下圖


由於在MAC上為了方便操作,Docker的建置也是包在虛擬機器內,
所以這個路徑對應的是虛擬主機內的路徑,並不是MAC上的路徑.
確認一下透過screen指令進去到Docker的虛擬主機環境下看看嚕 .
 

screen ~/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/tty

如上圖所示.透過 docker volume inspect這指令指出的位置確實是Docker虛擬機器上的位置
在MAC上主機跟容器間使用volume有點小麻煩.
只好想想別招,透過docker-compose 環境變數來達到這個目的

.env

LocalPath=請改成自己想存放的位置,如:/Users/TestA/cxcc

如上透過.env檔案設定自己定義的容器內檔案存放位置

docker-compose.yml

version: "3"
services:
sonarqube:
image: sonarqube
ports:
- "9000:9000"
networks:
- sonarnet
environment:
- SONARQUBE_JDBC_URL=jdbc:postgresql://db:5432/sonar
volumes:
- '${LocalPath}/conf:/opt/sonarqube/conf'
- '${LocalPath}/data:/opt/sonarqube/data'
- '${LocalPath}/ext:/opt/sonarqube/extensions'
- '${LocalPath}/plugin:/opt/sonarqube/extensions/plugins'
db:
image: postgres
networks:
- sonarnet
environment:
- POSTGRES_USER=sonar
- POSTGRES_PASSWORD=sonar
volumes:
- '${LocalPath}/postgresql:/var/lib/postgresql'
- '${LocalPath}/postgresqldata:/var/lib/postgresql/data'
networks:
sonarnet:
driver: bridge

Try 一發試試
*.env檔案請跟docker-compose.yml 擺在一起即可*

docker-compose up

如上圖已成功建置完成

ls -dl */

也有產出相對應的存放資料夾

網址上輸入
http://127.0.0.1:9000
預設登入帳密:admin/admin

到這邊環境就算建置完成嚕

==>Yaml檔請點我下載<==

 

參考連結:

Variables in Docker Compose
docker-sonarqube
使用 SonarQube 来分析 .NET Core 项目代码问题
程式碼品質分析的好用工具 SonarQube