- Sonarqube イメージには一時的な h2 データベース エンジンが付属していますが、これは運用環境には推奨されておらず、コンテナーの再起動後も維持されません。
- 独自のデータベースをセットアップし、コンテナーの起動時にそれを Sonarqube にポイントする必要があります。
- Sonarqube docker イメージは、 Sonarqube Dockerfile
"$SONARQUBE_HOME/data", "$SONARQUBE_HOME/extensions"
から見た 2 つのボリュームを公開します。
呼び出し間でデータを永続化したかったので、製品グレードのデータベースがセットアップされ、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