- Sonarqubeイメージには、一時的なh2データベースエンジンが付属しています。これは、実稼働環境には推奨されず、コンテナを再起動しても保持されません。
- 私たち自身のデータベースをセットアップし、コンテナの起動時にSonarqubeを指すようにする必要があります。
- Sonarqubeドッカー画像は、Sonarqube Dockerfileから見られるように、2つのボリューム
"$SONARQUBE_HOME/data", "$SONARQUBE_HOME/extensions"
を公開しています。
データを永続化したいので、プロダクショングレードのデータベースがセットアップされ、Sonarqubeにリンクされていることを確認し、拡張ディレクトリが作成され、ボリュームとしてホストマシンにマウントされます。ダウンロードされたプラグインはコンテナの呼び出し全体で使用でき、複数のコンテナで使用できます(必要な場合)。
データベースのセットアップ:
create database sonar;
grant all on sonar.* to `sonar`@`%` identified by "SOME_PASSWORD";
flush privileges;
# since we do not know the containers IP before hand, we use '%' for sonarqube host IP.
テーブルを作成する必要はありません、それはそれらを見つけることができなかった場合、Sonarqubeはそれらを作成します。
が起動Sonarqubeコンテナ:
# create a directory on host
mkdir /server_data/sonarqube/extensions
mkdir /server_data/sonarqube/data # this will be useful in saving startup time
# Start the container
docker run -d \
--name sonarqube \
-p 9000:9000 \
-e SONARQUBE_JDBC_USERNAME=sonar \
-e SONARQUBE_JDBC_PASSWORD=SOME_PASSWORD \
-e SONARQUBE_JDBC_URL="jdbc:mysql://HOST_IP_OF_DB_SERVER:PORT/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance" \
-v /server_data/sonarqube/data:/opt/sonarqube/data \
-v /server_data/sonarqube/extensions:/opt/sonarqube/extensions \
sonarqube