今更だけどSonarQubeをDockerで動かす

# 概要

静的解析ツールのSonarQubeを動かしたいけど、全然今時の記事がないので備忘録がてらに。

## docker-compose.ymlの設定

```docker-compose.yml
version: '3'
services:

  #PHP Service
  app:
  .
  .
  .

  sonarqube:
    image: sonarqube:9.0-community
    depends_on:
      - pgsql
    ports:
      - "9000:9000"
    networks:
      - app-network
    environment:
      SONAR_JDBC_URL: jdbc:postgresql://pgsql: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
      - sonarqube_temp:/opt/sonarqube/temp

  pgsql:
    image: postgres:10
    networks:
      - app-network
    environment:
      POSTGRES_USER: sonar
      POSTGRES_PASSWORD: sonar
    volumes:
      - postgresql:/var/lib/postgresql
      - postgresql_data:/var/lib/postgresql/data

networks:
  app-network:
    driver: bridge

volumes:
  sonarqube_data:
    driver: local
  sonarqube_extensions:
    driver: local
  sonarqube_logs:
    driver: local
  sonarqube_temp:
    driver: local
  postgresql:
    driver: local
  postgresql_data:
    driver: local
```

```console
$ docker-compose up -d
```

[localhost:9000](http://localhost:9000/)
でアイパス共に「admin」でログインできる。

![スクリーンショット 2021-07-24 14.44.33.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/133718/a472c7dc-e1a8-54ee-3725-b4f9dcc4159e.png)

## プロジェクトを作る

[localhost:9000/projects/create](http://localhost:9000/projects/create/)
にアクセスしてプロジェクトを作成する。

![スクリーンショット 2021-07-24 14.58.08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/133718/a7159479-740b-a9cd-839f-04d7a6abef68.png)

ログイントークンを生成し、以下の画面まで到達する。
**ローカルなのでログイントークンは公開していますが、サーバー上で動かす場合は、ログイントークンは公開しないでください**

![スクリーンショット 2021-07-24 14.59.43.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/133718/2522792c-f12f-fc53-21de-579b3c9a19cb.png)


ダウンロードリンクをクリックし、以下のsonar-scanner-cliのDockerでの操作方法を確認する。

[https://docs.sonarqube.org/latest/analysis/scan/sonarscanner/](https://docs.sonarqube.org/latest/analysis/scan/sonarscanner/)
にて![スクリーンショット 2021-07-24 15.02.28.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/133718/05797166-ab55-85a1-9dfe-c9121070abc9.png)

## いざスキャン！

が、

```console
$ docker run \
    --rm \
    -e SONAR_HOST_URL="http://${SONARQUBE_URL}" \
    -e SONAR_LOGIN="myAuthenticationToken" \
    -v "${YOUR_REPO}:/usr/src" \
    sonarsource/sonar-scanner-cli
```

では動かない。
Httpディレクトリをスキャンしたい場合は、以下

```console
$ docker run \
    --rm \
    --net host \
    -e SONAR_HOST_URL="http://localhost:9000" \
    -v ${PWD}/app/Http:/usr/src \
    sonarsource/sonar-scanner-cli \
    -Dsonar.projectKey=test \
    -Dsonar.sonar.projectName=test \
    -Dsonar.sonar.projectVersion=1.0 \
    -Dsonar.sonar.sourceEncoding=UTF-8 \
    -Dsonar.sonar.host.url=http://localhost:9000 \
    -Dsonar.login=a242986b52522d94b2b426b8f4c6de343c389487
```

## 結果

![スクリーンショット 2021-07-24 15.08.07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/133718/7c42c4e8-8561-5c1d-9abd-2f3e6e6b659a.png)

## 参照

[Error running sonar-scanner via docker image](https://stackoverflow.com/questions/64034632/error-running-sonar-scanner-via-docker-image)
[sonarqube Doc](https://docs.sonarqube.org/latest/analysis/scan/sonarscanner/)