1
4

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 1 year has passed since last update.

(ナレッジ)docker-composeでsonarqubeを動かす

Last updated at Posted at 2023-04-01

やりたいこと

  • sonarqubeをローカルで立ち上げて、かつデータは永続化したい
  • sonarqubeにDB設定をしないとH2データベースを使ってしまうのでdocker-composeで合わせて設定する

前提

ローカル環境にdocker-composeが入っていること

手順

公式からサンプルファイルを取得し任意のフォルダに配置

  • 執筆時点では以下の記載
docker-compose.yml
version: "3"
services:
  sonarqube:
    image: sonarqube:community
    hostname: sonarqube
    container_name: sonarqube
    depends_on:
      - db
    environment:
      SONAR_JDBC_URL: jdbc:postgresql://db:5432/sonar
      SONAR_JDBC_USERNAME: sonar
      SONAR_JDBC_PASSWORD: sonar
    volumes:
      - sonarqube_data:/opt/sonarqube/data
      - sonarqube_extensions:/opt/sonarqube/extensions
      - sonarqube_logs:/opt/sonarqube/logs
    ports:
      - "9000:9000"
  db:
    image: postgres:13
    hostname: postgresql
    container_name: postgresql
    environment:
      POSTGRES_USER: sonar
      POSTGRES_PASSWORD: sonar
      POSTGRES_DB: sonar
    volumes:
      - postgresql:/var/lib/postgresql
      - postgresql_data:/var/lib/postgresql/data

volumes:
  sonarqube_data:
  sonarqube_extensions:
  sonarqube_logs:
  postgresql:
  postgresql_data:

docker-compose up -d --buildで立ち上げ

  • サンプルファイルはデフォルトポートをそのまま使っているので、被ってないことを確認した上で立ち上げてください

無事立ち上がればOK! :clap:

sonaqubeアクセス

http://localhost:9000

無事アクセスできればOK! :clap:

あとは、id/pwをadmin/adminでログインして設定するだけ

トラブルシューティング

ここからは立ち上がらなかったときの対処法のメモ

Postgresqlのバージョンが違うよエラーがでてPostgreSQLが立ち上がらない

以下のようなエラー(バージョンは人によって違うと思います)

The data directory was initialized by PostgreSQL version 10, which is not compatible with this version 13.10  docker
  • 原因
    • ボリュームに保存されているバージョンと、今起動しようとしているバージョンが違うため
  • 対処法
    • 以下のコマンドで一度ボリューム含めて全削除する
      • docker-compose down --rmi all --volumes --remove-orphans
      • ※注記)docker-composeの設定がすべて消えます

ElasticSearchでエラー

You must address the points described in the following [1] lines before starting Elasticsearch.
  • 対処法
    • こちらを参考https://stackoverflow.com/questions/57070176/sonarqube-7-9-1-community-troubleshooting
    • Elasticsearch は MMap FS ディレクトリを使用してインデックスを保存します。OSのデフォルトのmmapカウントの制限値が低すぎる可能性があり、メモリ不足の例外が発生する可能性があります。以下のコマンドを入力し、sudo権限で仮想メモリの値を増やしてください、
      • デフォルトだとvm.max_map_countの値が低く設定されているためとのこと
      • 以下コマンドを実行して、再度立ち上げ
      • sudo sysctl -w vm.max_map_count=262144

postgresqlのデフォルトポートを変更したい場合

docker-compose内で定義したsonarqubeは5432ポートを見に行くので、

ローカル環境で競合を避けたい場合は以下の★を変更するだけ

version: "3"
services:
  sonarqube:
    image: sonarqube:community
    hostname: sonarqube
    container_name: sonarqube
    depends_on:
      - db
    environment:
      # sonaqube is connecting to db on 5432port. ★この接続先はそのまま5432ポート
      SONAR_JDBC_URL: jdbc:postgresql://db:5432/sonar
      SONAR_JDBC_USERNAME: sonar
      SONAR_JDBC_PASSWORD: sonar
    volumes:
      - sonarqube_data:/opt/sonarqube/data
      - sonarqube_extensions:/opt/sonarqube/extensions
      - sonarqube_logs:/opt/sonarqube/logs
    ports:
      - "9000:9000"
  db:
    image: postgres:13
    ports:
      - "25432:5432" # avoid conflict local pgsql port ★
    hostname: postgresql
    container_name: postgresql
    environment:
      POSTGRES_USER: sonar
      POSTGRES_PASSWORD: sonar
      POSTGRES_DB: sonar
    volumes:
      - postgresql:/var/lib/postgresql
      - postgresql_data:/var/lib/postgresql/data

volumes:
  sonarqube_data:
  sonarqube_extensions:
  sonarqube_logs:
  postgresql:
  postgresql_data:


  • 参考

最後に

こちらの記事が参考になったら幸いです。

1
4
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
1
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?