PhpStormでLaravelをデバックする設定【Docker Compose編】

[忘れがちなPhpStormの設定あれこれ](https://qiita.com/_bobtabo_/items/d6f44efc17b7d934cfcd)で、PhpStomでVagrant環境のリモートデバッグ設定を書きましたが、今回はDocker Compose環境でのデバッグ設定です。

# マシンスペック
* Mac mini 2018
* macOS Catalina（10.15.x）
* Intel Core-i7 3.2GHz 6コア
* メモリ 32GB
* SSD 512GB

# Docker環境
* Nginx 最新版
* PHP（PHP-FPM） 7.4.x
* MySQL 8.x
* Composer 2.x
* Laravel 8.x
* Redis 最新版
* MailHog 最新版

# やること
* Docker Compose環境のPhpStormデバッグ設定

# 前提
このポート環境を満たしてないと、多分ブレークポイント止まらない。
[【コピペ】Docker ComposeでLaravel開発環境を構築その肆#IDEでブレークポイント止める為の準備](https://qiita.com/_bobtabo_/items/2afe45d78ca45951e64f#ide%E3%81%A7%E3%83%96%E3%83%AC%E3%83%BC%E3%82%AF%E3%83%9D%E3%82%A4%E3%83%B3%E3%83%88%E6%AD%A2%E3%82%81%E3%82%8B%E7%82%BA%E3%81%AE%E6%BA%96%E5%82%99)

# Docker環境の準備

[【コピペ】Docker ComposeでLaravel開発環境を構築その伍#使い方](https://qiita.com/_bobtabo_/items/e76a14bd7ed65b5e34b1#%E4%BD%BF%E3%81%84%E6%96%B9)

# デバッグするコードの準備

ブレークポイントを止めなきゃなので、WelcomeページをController経由に修正。

### routes/web.phpを編集

```php:routes/web.php
use Illuminate\Support\Facades\Route;
・・・
Route::get('/', function () {
    return view('welcome');
});
```
↓ 下記に編集。

```php:routes/web.php
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\Web\WelcomeController;
・・・
Route::group(['namespace' => 'Web'], function () {
    Route::get('/', [WelcomeController::class, 'index']);
});
```

### WelcomeControllerを作成

```php:app/Http/Controllers/Web/WelcomeController.php
<?php

namespace App\Http\Controllers\Web;

use App\Http\Controllers\Controller;

class WelcomeController extends Controller
{
    public function index()
    {
        return view('welcome');
    }
}
```

# デバッグする

### デバッグ設定

- 設定を開く。
![スクリーンショット 2021-01-22 21.21.20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/111551/25a45e09-e37c-353e-9a19-d91dfa011125.png)

- Docker設定を追加する。
![スクリーンショット 2021-04-07 19.27.25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/111551/6d5166f0-fca6-8071-ea48-2620e26c7eb8.png)

- パスマッピングにはvolumesのパスを設定する。

```yml:docker-compose.yml
php:
  〜 略 〜
  volumes:
    - ./src:/home/docker
```

項目 | 設定値
-----------|------------
仮想マシンパス | /home/docker
ローカルパス | /Users/xxx/docker/src

- デバッグ設定を開き、コンテナ側ポートを設定する。
![スクリーンショット 2021-04-07 19.28.16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/111551/c931ed28-beab-c8c6-e1cb-b03f443b30c7.png)

- CLIインタープリター設定を開く。
![スクリーンショット 2021-04-07 20.10.24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/111551/71083ee9-12c1-a5ff-ba68-d264d4b6c52c.png)

- CLIインタープリターを新規追加する。
![スクリーンショット 2021-01-23 1.45.29.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/111551/48c72fc8-91a0-1547-2c27-1f8c2209bb58.png)

- 「From Docker, Vagrant, VM, WSL, Remote...」を選択する。
![スクリーンショット 2021-01-22 21.22.48.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/111551/3aa7aa1b-ffe5-deea-3a2d-a0c48bdbc70e.png)

- 構成ファイルを開く。
![スクリーンショット 2021-01-23 2.15.24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/111551/98297001-5c8a-9e42-7039-ad2ac4c17f2f.png)

- Docker Compose構成ファイルを、新規追加する。
![スクリーンショット 2021-01-23 0.26.54.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/111551/0e93e08b-ddf9-b1f9-f8bd-50470dee3fa9.png)

- docker-compose.yml を選択し、「OK」をクリックする。
![スクリーンショット 2021-01-23 0.28.03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/111551/dca60d6f-be04-8f3a-b9ca-ba929a9bd4c9.png)

- サービスは「php」を選択し、「OK」をクリックする。
![スクリーンショット 2021-01-23 0.31.05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/111551/3362b654-86d2-ae14-5f30-e7376ce97e4c.png)

- ライフサイクルを設定し、「OK」をクリックする。
![スクリーンショット 2021-04-07 20.27.37.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/111551/c9dd0ef9-02c4-dff3-5d77-586e7aa84a46.png)

- PHP言語レベルを変更し、「OK」をクリックする。
![スクリーンショット 2021-04-07 20.29.58.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/111551/8f67f820-9899-a66a-08d6-a2662660e864.png)

- サーバー設定を開き、追加する。
![スクリーンショット 2021-04-07 20.45.54.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/111551/0c15f199-c832-edb8-2b32-9049ab6d2002.png)

項目 | 設定値
-----------|------------
名前 | 任意の名前
ホスト | 127.0.0.1
パスマッピングを使用する | チェックする
サーバー上の絶対パス | /home/docker/laravel

- 実行構成を追加する。
![スクリーンショット 2021-04-08 1.08.47.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/111551/f5dac806-d9f3-e8e5-cc03-5434dc86376c.png)

- PHPリモートデバッグを追加する。
![スクリーンショット 2021-04-08 1.16.44.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/111551/5da1b488-e614-5d76-7a86-6275718f1b6a.png)

項目 | 設定値
-----------|------------
名前 | 任意の名前
IDEキーでデバッグ接続 | チェックする
サーバー | サーバー設定で追加したXDebug
IDEキー | PHPSTORM

### デバッグ

- PHPデバッグ接続のリッスンを開始し、デバッグを実行します。
![スクリーンショット 2021-04-08 1.40.16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/111551/c89fa83b-59ce-9d7d-c266-dc34c7009b3d.png)

- ページアクセスすると、ブレークポイント置いた箇所に止まります。
![スクリーンショット 2021-04-08 1.45.04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/111551/db805e52-32f5-3935-c9f8-3d38139db094.png)