この記事では、docker-compose を利用して、2つのパターンでSonarQubeをデプロイする方法を分かりやすく解説します。
- 内部DB利用: まずは手軽に試したい方向け。内蔵データベースですぐに起動可能
- 外部DB利用: 本格的な運用を想定している方向け。永続的なデータ管理が可能
目的に合わせて、好きな方から試してみてください!
準備するもの
これらがインストールされていれば準備OKです。
内部DB利用のデプロイ(テスト運用、お試し向け)
SonarQubeは、デフォルトで評価用のH2データベースを内蔵しているため、データベースコンテナを別途用意しなくても単体で起動できます。
ただ、volumeを設定しないとコンテナを削除するとデータが消えてしまいます。あくまでお試し用とご了承ください。
compose.ymlの作成
作業用のディレクトリを作成し、compose.yml という名前のファイルを以下の内容で作成します。
version: "3"
services:
sonarqube:
image: sonarqube:latest # 最新のSonarQubeイメージを使用
container_name: sonarqube
ports:
- "9000:9000" # ホストの9000番ポートをコンテナの9000番ポートにマッピング
environment:
- SONAR_ES_BOOTSTRAP_CHECKS_DISABLE=true # 開発・テストモードでのElasticsearchチェックを無効化
volumes:
- ./sq-logs:/opt/sonarqube/logs
- ./sq-data:/opt/sonarqube/data
- ./sq-extensions:/opt/sonarqube/extensions
解説:
-
image: sonarqube:latest: Docker Hubから最新の公式SonarQubeイメージを取得 -
ports: SonarQubeのWebインターフェースにアクセスするためのポート設定 -
environment: Elasticsearchの起動チェックを無効にする設定です。これがないとメモリ割り当てなどの問題で起動に失敗する可能性あり -
volumes: SonarQubeのデータ(解析結果など)、拡張機能(プラグイン)、ログを永続化するための設定です。これにより、コンテナを再起動してもデータが保持される
SonarQubeの起動
compose.yml を保存したディレクトリで、以下のコマンドを実行します。
docker-compose up -d
-d オプションは、バックグラウンドでコンテナを起動するという意味です。
動作確認
ブラウザで http://localhost:9000 にアクセスしてください。無事にログイン画面が表示されれば成功です!
初回は以下のデフォルト認証情報でログインできます。
- ユーザー名:
admin - パスワード:
admin
ログイン後、パスワードの変更を求められますので、新しいパスワードを設定してください。
外部DB利用でデプロイ(本格運用向け)
次に、本番環境での利用を想定し、データベースとしてPostgreSQLを利用する構成です。
先ほどとは別の compose.yml を用意します。今度は sonarqube と db (PostgreSQL) の2つのサービスを定義します。
services:
sonarqube:
image: sonarqube:latest
ports:
- 9000:9000
environment:
SONAR_JDBC_USERNAME: sonarqube_user
SONAR_JDBC_PASSWORD: sonarqube_pw
SONAR_JDBC_URL: jdbc:postgresql://postgres-db:5432/sonarqube_db
SONAR_TELEMETRY_ENABLE: "false"
volumes:
- ./sq-logs:/opt/sonarqube/logs
- ./sq-data:/opt/sonarqube/data
- ./sq-extensions:/opt/sonarqube/extensions
postgres-db:
image: postgres:17
ports:
- 5432:5432
environment:
POSTGRES_USER: sonarqube_user
POSTGRES_PASSWORD: sonarqube_pw
POSTGRES_DB: sonarqube_db
volumes:
- ./pg-data:/var/lib/postgresql/data
解説:
-
services: sonarqube と db の2つのコンテナを定義 -
sonarqube.depends_on: - db: SonarQubeコンテナは、dbコンテナが起動してから起動するように依存関係を設定 -
sonarqube.environment:-
SONAR_JDBC_URL: SonarQubeが接続するデータベースのURLです。db:5432のdbは、サービス名 (db:) の意味。Docker Composeのネットワーク機能により、サービス名でコンテナ間通信が可能 -
SONAR_JDBC_USERNAME, SONAR_JDBC_PASSWORD: データベースに接続するための認証情報
-
-
db.environment: PostgreSQLコンテナの環境変数です。ここで設定したユーザー名、パスワード、データベース名をSonarQube側の設定と一致させる必要 -
volumes:sonarqubeとpostgresql_dataの両方でボリュームを定義し、それぞれのデータを永続化
SonarQubeの起動と確認
設定方法は違いますが、起動コマンドは先ほどと同じです。
docker-compose up -d
同様に http://localhost:9000 にアクセスして、SonarQubeの画面が表示されることを確認してください。バックグラウンドでは、SonarQubeがPostgreSQLに接続し、初期設定を行っています。
