以Docker的方式安裝SonarQube

利用Docker的方式安裝SonarQube無論移植性或未來更新,都相對方便。如果只是要單純執行起來,不設定Presistence的話,其實一行指令就結束了,很簡單。不過,如果要想要完整設定好SonarQube,就需要注意一些眉眉角角的地方。本文會針對如何設定,進行步驟式的說明。

安裝

Step 1. 建立docker-compose file, docker-compose.yml

version: '3.1'
services:
  postgresql:
    # 版本可以自行選用
    image: docker.io/bitnami/postgresql:13
    restart: always
    hostname: postgresql
    container_name: postgresql
    volumes:
      # Presistence 可自行選目錄對應
      - '/home/wayne/dv/sonarqube/postgresql:/bitnami/postgresql'
    environment:
      - POSTGRESQL_USERNAME=bn_sonarqube
      - POSTGRESQL_DATABASE=bitnami_sonarqube
      # 密碼改成自己要的
      - POSTGRESQL_PASSWORD=xxxxxxxx
      - POSTGRESQL_CLIENT_POSTGRES_PASSWORD=xxxxxxxx
    networks:
      - sonarqube-network
  sonarqube:
    # 版本可以自行選用
    image: docker.io/bitnami/sonarqube:9
    restart: always
    hostname: sonarqube
    ports:
      - '9000:9000'
    container_name: sonarqube
    volumes:
      # Presistence 可自行選目錄對應
      - '/home/wayne/dv/sonarqube/sonarqube:/bitnami/sonarqube'
    environment:
      - SONARQUBE_DATABASE_HOST=postgresql
      - SONARQUBE_DATABASE_PORT_NUMBER=5432
      - SONARQUBE_DATABASE_USER=bn_sonarqube
      - SONARQUBE_DATABASE_NAME=bitnami_sonarqube
      # 密碼要對應上面資料庫
      - SONARQUBE_DATABASE_PASSWORD=xxxxxxxx
    networks:
      # 要自行建立一個外部的docker network,名為sonarqube-network
      - sonarqube-network
networks:
  sonarqube-network:
    external: true  

Step 2. 建立Docker networkse.yml

sudo docker network create sonarqube-network

Step 3. 修改Presistence目錄的權限

batnami/sonarqube要求Presistence目錄要是UID 1001。
首先,建立一個使用者,如果沒必要,就不用連結home directory。參考以下指令

sudo useradd -M sonarqube

接著設定該user的UID

sudo usermod -u 1001 sonarqube

把兩個Presistence的目錄的使用者跟群組都設為sonarqube

sudo chown sonarqube:sonarqube /home/wayne/dv/sonarqube/postgresql
sudo chown sonarqube:sonarqube /home/wayne/dv/sonarqube/sonarqube

Step 4. 修改linux kernel變數,擴增sonarqube要用的memory

sudo vim /etc/sysctl.conf

加入以下兩行

vm.max_map_count = 262144
fs.file-max = 65536
sudo vim /etc/security/limits.conf

加入以下兩行

*    soft    nofile    65536
*    hard    nofile    65536

重開機

sudo reboot

Step 5. 啟動SonarQube

sudo docker-compose up

Step 6. 登入測試

在browser輸入該主機的位址與port 9000.例如:http://192.168.1.1:9000
利用username: admin, password: bitnami 登入之後,再改密碼並且新增users.

除錯(如果有需求的話)

利用以下指令進到sonarqube container內部

sudo docker container exec -it sonarqube bash

接著用以下指令看sonarqube達行的log內容

tail -f /opt/bitnami/sonarqube/logs/sonar.log

參考

docker-sonarqube issues
Dockerhub-bitnami/sonarqube
使用Docker安裝SonarQube
sonarqube debug