利用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