18
17

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

自分のMac上のDockerにSonar環境を作る

Last updated at Posted at 2015-05-24

そもそも、ちゃんとCIサーバと連携させて環境作れよって話なんですが、自分用にちょこっとしたものを開発したときに見たいときってありません?あんまりないのかな、そういうこと。
フリーなウェブサービスを使っても良いんですけど、自分用にPCに環境を作ってみました。

前提

  • dockerが使える状態になっていること。
  • 以下、boot2docker上でdockerコンテナを動作させることが前提の説明。

boot2dockerのインストール等、dockerを使う準備はここをみてやっておく。(以下はmacの人向け)
https://docs.docker.com/installation/mac/

インストール

sonar用のMySQLをDocker上で起動させる

とりあえず、MySQLをいれておきます。詳細はここを。
https://github.com/tpires/docker-sonar

$ docker run -i -t -d -p 3306:3306 --name smysql tpires/sonar-mysql

sonarをDocker上で起動させる

続いて、sonar本体を動かすコンテナを起動させます。詳細はここを。
ちなみに、9000は他で使っているので、自分は9090でポートフォワードするようにしています。以下のコマンドはデフォルトではないのでお気をつけて。
https://registry.hub.docker.com/u/mzagar/sonar5/

注記:
このバージョンのsonarにバグがあることがわかったので、このDockerfileを使うのではなく、最下部に自分が追記したものを使ったほうが良いかもしれません。
$ docker run -i -t -d --name sonar5 -p 9090:9000 --link smysql:db mzagar/sonar5

動作確認

上記のコンテナが立ち上がると、以下の感じになっているかと思います。

$ docker ps
CONTAINER ID        IMAGE                       COMMAND                CREATED             STATUS              PORTS                                                NAMES
429cbe15ccab        mzagar/sonar5:latest        "/opt/sonar/bin/linu   4 seconds ago       Up 3 seconds        0.0.0.0:9090->9000/tcp                               sonar5              
a9cb3072e148        tpires/sonar-mysql:latest   "mysqld_safe"          15 minutes ago      Up 15 minutes       0.0.0.0:3306->3306/tcp                               smysql 

以下のコマンドでboot2dockerに割り当てられているIPを調べて、ブラウザでアクセスすると、sonarの画面が出ます。

$ boot2docker ip
192.168.59.103

初期画面はこんな感じ。

sonar-local.png

デフォルトのユーザは、admin/adminになっているので、それで右上にあるリンクからログインできます。

使ってみる

自分はJava大好き人間なので。。
以下はMavenを使っている場合の設定です。

pom.xmlを修正する

自分が管理しているMavenプロジェクトのpom.xmlを修正します。propertiesのエリアに以下を追加します。
普通は以下の設定でいけると思いますが、boot2dockerのipが別になっていたり、カスタマイズしている場合は適宜変更します。

<properties>
    <sonar.host.url>http://192.168.59.103:9090</sonar.host.url>
    <sonar.jdbc.url>jdbc:mysql://192.168.59.103:3306/sonar?useUnicode=true&amp;characterEncoding=utf8&amp;rewriteBatchedStatements=true</sonar.jdbc.url>
    <sonar.jdbc.username>sonar</sonar.jdbc.username>
    <sonar.jdbc.password>123qwe</sonar.jdbc.password>
</properties>

mavenを実行する

普通にsonarを使うときと同様、以下のコマンドを実行。

$ mvn clean install -DskipTests=true
$ mvn sonar:sonar

ダッシュボードを見てみる

さっきのダッシュボードをリロードすると、何か出てきます。
自分のプロジェクトの情報がアップされています。めでたしめでたし。

あとは自分で好きなようにカスタマイズして良きプロジェクト管理ライフを!

追記

と思ったら、sonar5はjavaのプラグイン?にバグがあるっぽく、NullPointerExceptionで落ちてしまうorz。(面倒だったので試してませんが、sonar-maven-pluginのバージョンを古いものにすればうまくいくかも?)
sonar5.1では解決されているというレポートを見つけたので、Dockerfileを自作してsonar5.1にアップデート。一応うまく動くようになったので、その手順を追記します。

sonar5のコンテナを削除

コンテナを停止させてから削除します。

$ docker stop sonar5
$ docker rm sonar5

sonar5.1のDockerを起動する

自作Dockerfileは、DockerHubにコミットしておいたので、たぶん以下のコマンドで勝手にpullしてきて、sonar5.1が使えるようになると思います。
いろんなものが本当に便利すぎる世の中だ。。

$ docker run -i -t -d --name sonar5.1 -p 9090:9000 --link smysql:db todoken/sonar5.1

これでOK。
ちなみに、古いバージョンでrunさせてしまった場合、以下のURLにアクセスすると自動でDBをアップデートしてくれます。

http://192.168.59.103:9090/setup

一応、バックアップとか取ったほうが良いと思います。詳しくは以下を参照。
http://docs.sonarqube.org/display/SONAR/Setup+and+Upgrade

18
17
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
18
17

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?