星期三, 10月 26, 2016

Docker-based SonarQube

首先當然是要把 Docker 裝好,再來照這裡的說明只要一行指令:
  • docker run -d --name sonarqube1 -p 9000:9000 sonarqube
裝好了,要等個幾分鐘才開得起來。若是急性子可下指令觀察進度:
  • docker logs sonarqube1
用瀏覽器連要記得加上埠號 http://sonarqube1:9000。接著就再看看有什麼變化,例如希望使用者不需要加埠號即可訪問,改個設定就好(其實是另開新機):
  • docker stop sonarqube1
  • docker rm sonarqube1
  • docker run -d --name sonarqube2 -p 80:9000 sonarqube
SonarQube 是未登入即可看到內容,但管理者登入後才能設定,預設帳密都是 admin。在 SystemInfo 看到時區是錯的?可以參考這篇調整,但指令要在 container 裡面下:
  • docker exec -it sonarqube2 sh
另外,在首頁有提醒「Embedded database should be used for evaluation purpose only」,那來裝個 MySQL 好了(可參考這裡):
  • docker run -d --name mysql1 -e MYSQL_ROOT_PASSWORD=changeit mysql
不同於預設的 h2 database,在 MySQL 我們要自行準備一個空的資料庫與足夠權限的登入帳密給 SonarQube 用,而且現在是分別由兩個 container 負責,有點像是兩部主機,所以可像這樣設定:
  • docker exec -it mysql1 sh
  • mysql -u root -pchangeit
  • create database sonardb;
  • grant all on sonardb.* to sonaruser@'%' identified by 'sonarpass';
  • flush privileges;
  • exit
  • exit
為了模擬未來是跨 container 的通訊,可以另開一部 MySQL 並僅使用 client 端命令工具,來驗證準備給 SonarQube 用的資料庫。先查一下 mysql1 的位址:
  • docker inspect mysql1 | grep IPAddress
接著是第二部 MySQL:
  • docker run -d --name mysql2 --link mysql1 -e MYSQL_RANDOM_ROOT_PASSWORD=true mysql
  • docker exec -it mysql2 sh
  • mysql -h <mysql1_IPAddress> -u sonaruser -psonarpass
  • show databases;
  • exit
  • exit
注意 show databases; 的結果要看得到 sonardb 才對。接著還是依這篇最早提到的參考網址,重啟另一部連接 MySQL 的 SonarQube:
  • docker run -d --name sonarqube3 -p 9000:9000 --link mysql1 -e SONARQUBE_JDBC_USERNAME=sonaruser -e SONARQUBE_JDBC_PASSWORD=sonarpass -e "SONARQUBE_JDBC_URL=jdbc:mysql://mysql1/sonardb?useUnicode=true&characterEncoding=utf8" sonarqube
[2017/03/07]
搭配 PostgreSQL 似乎更容易些,且效率、評價都好,精簡至四道指令完成:

  • docker run -d --name postgres1 postgres
  • docker exec -it postgres1 createuser -U postgres -d -P -s sonar (input sonar / sonar)
  • docker exec -it postgres1 createdb -U sonar sonar
  • docker run -d --name sonarqube4 -p 9000:9000 --link postgres1 -e SONARQUBE_JDBC_URL=jdbc:postgresql://postgres1/sonar sonarqube

沒有留言:

張貼留言