0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

SonarQubeをDockerでサクッと起動!簡単デプロイガイド

Posted at

この記事では、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

ログイン後、パスワードの変更を求められますので、新しいパスワードを設定してください。

image.png

外部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:5432db は、サービス名 (db:) の意味。Docker Composeのネットワーク機能により、サービス名でコンテナ間通信が可能

    • SONAR_JDBC_USERNAME, SONAR_JDBC_PASSWORD: データベースに接続するための認証情報

  • db.environment: PostgreSQLコンテナの環境変数です。ここで設定したユーザー名、パスワード、データベース名をSonarQube側の設定と一致させる必要
  • volumes: sonarqubepostgresql_data の両方でボリュームを定義し、それぞれのデータを永続化

SonarQubeの起動と確認

設定方法は違いますが、起動コマンドは先ほどと同じです。

docker-compose up -d

同様に http://localhost:9000 にアクセスして、SonarQubeの画面が表示されることを確認してください。バックグラウンドでは、SonarQubeがPostgreSQLに接続し、初期設定を行っています。

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?