SonarQubeを使いたくなったのでとりあえずいつも通りDockerで構築してみました。

環境


  • SonarQube 7.4
  • PostgreSQL 11

でやってます。

SonarQube 7.4のイメージを作成する


まあ、なんていうんですかね。いつも通りに公式のDockerイメージを使おうとしたんですよ。使おうとしたんですが、現時点で7.4まででているのに7.1しかないんですね。7.3のプルリクとかあるんですけど放置されてるんですよ。放置されてるので自分でなんとかします。

まず、公式のDockerイメージのコードをcloneします。

1
2
3
4
5
6
7
git clone https://github.com/SonarSource/docker-sonarqube.git
Cloning into 'docker-sonarqube'...
remote: Enumerating objects: 1, done.
remote: Counting objects: 100% (1/1), done.
remote: Total 606 (delta 0), reused 0 (delta 0), pack-reused 605 eceiving objects: 92% (558/606)
Receiving objects: 100% (606/606), 93.29 KiB | 436.00 KiB/s, done.
Resolving deltas: 100% (280/280), done.

7.3のプルリクをfetchしてきます。

1
2
3
4
5
6
7
git fetch origin pull/206/head:BRANCHNAME
remote: Enumerating objects: 5, done.
remote: Counting objects: 100% (5/5), done.
remote: Total 9 (delta 5), reused 5 (delta 5), pack-reused 4
Unpacking objects: 100% (9/9), done.
From https://github.com/SonarSource/docker-sonarqube
* [new ref] refs/pull/206/head -> BRANCHNAME

で、あとはこの7.3をコピって7.4を作りました。

docker-compose.ymlを作る


上記で作成した7.4のイメージを使用したdocker-compose.ymlを作成します。SonarQubeはデフォルトではH2データベースを使用しますが、PostgreSQLに変更します。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
version: "3"

services:
sonarqube:
build: ./7.4
ports:
- "9000:9000"
networks:
- sonarnet
environment:
- SONARQUBE_JDBC_URL=jdbc:postgresql://db:5432/sonar
volumes:
- ./volumes/sonarqube/config:/opt/sonarqube/conf
- ./volumes/sonarqube/data:/opt/sonarqube/data
- ./volumes/sonarqube/extensions:/opt/sonarqube/extensions
- ./volumes/sonarqube/plugins:/opt/sonarqube/lib/bundled-plugins

db:
image: postgres:11
networks:
- sonarnet
environment:
- POSTGRES_USER=sonar
- POSTGRES_PASSWORD=sonar
volumes:
- ./volumes/db:/var/lib/postgresql

networks:
sonarnet:
driver: bridge

こんな感じです。で、今回やった 7.4の対応 + docker-compose のものはここに置いてます

起動してみる


後は起動してlocalhost:9000でアクセスできます。

日本語プラグインについて


日本語プラグインは2年くらい放置されていて、プルリクもIssueも放置されているので今後のリリースは期待できないと思います。他にもロシア語プラグインとかも放置されてるっぽいです。

今後


GitLabCIと連携させる予定なのでやったら書きます。たぶん。