LaravelのDockerでX-debugを有効にする

### Enable X-debug on Docker for Laravel
---
**始める前に**

dockerを使用してx-debugを設定するさまざまな方法に関するチュートリアルがたくさんあります。一部は時代遅れで、一部は他のテクニックを使用します。

**Before starting**

There are a lot of tutorials on different ways to configure x-debug using docker, some are outdated, some use other techniques, this tutorial is on the configuration that works for me, but I don´t guarantee that it will work for you.   

---

[APIの作成方法](https://qiita.com/dabiddo/items/7e4a9122fe871788065c)の前のチュートリアルに従ってください

Follow previous tutorial on [how to make an API](https://qiita.com/dabiddo/items/7e4a9122fe871788065c)

##### nginx.confを編集します


nginx.confファイルには***server_name***が必要です

the nginx.conf file needs a ***server_name***

```
server {
  listen 80;
  server_name localhost;
```

##### Dockerfileを編集


Dockerfileを編集して、x-debugプラグインのインストールを追加し、docker-pluginを有効にします

Edit the Dockerfile to add x-debug plugin install and enable the docker-plugin

```
RUN pecl install xdebug && docker-php-ext-enable xdebug

#COPY xdebug.ini /etc/php/7.3/mods-available/xdebug.ini
RUN echo "xdebug.remote_enable=1" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini \
     && echo "xdebug.remote_autostart=1" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini \
     && echo "xdebug.remote_connect_back = 1" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini \
     && echo "xdebug.profiler_enable = 1" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini \
     && echo "xdebug.remote_port=9000" >>  /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini
```

##### docker-compose.yml編集

app-serverコンテナ内のdocker-composeファイルでx-debugを有効にします

Enable x-debug on docker-compose file, in the app-server container

```
services:
  app-server:
    build: .cloud/docker
    image: laravel-api #name of the image
    environment:
      PHP_XDEBUG_ENABLED: 1
    depends_on:
```

##### PHP Stormを構成する

PHP設定内で、プロパティを次のように設定します。

Inside the PHP settings, set the properties as follow

![](https://lh3.googleusercontent.com/jXS-Bl0dbDuokIaOdNsZiy-g60S27MNXZDqGBKekGdtjlPjkFzNI26EJIV4ztwr2GMJQfchD3icQHksaSMJ4p6Hrs2m4mGE6FA1FboaP5rRkm6Ra-W0VOcbiWjJDq3iRC9nXukg6UJzro4M9q5uo0JkTR2CY9CYE1UcxQw99bAVs1-ZsuXIvYPTNZsU3kxY9pLgdO2DShQ-mor0JOi_qBxtjd2y1b1UfRBGUQ5EL-OCxqHknjicC92ZaP0GnfdiFrJMJ3plQFjouiTC98mmgfRq680yAvRd6tu45DsIdYtiHFho6sLdg2GQ6XBlsYvDevWZOGWniBQ2DJ163H1TRAOIsHkiTyjJO22U6XDpqbRA9xLMwJ5CiZ_eZ2rY2N9QARRhFz5s3iCU7jdHvHIai2WSKrZTOyKOhRG3nM7WfXFnPgy3v4pTYU6N_ZIufKqaCCDtcnYjx7V1l1EDOMzYlD3iPJ1nHzYeYZwTlBXW7setMqN8LjrCE33K2PpYe_U0Zql3jzgpNzAt9YJibkdku2L26a4Yl54VOZBZXqIK13DAhVBNCS8spscsAEXPdoBWQlOkzu-P9k4KiUxMoiEETfVDtzn6r7qMI4HTeLfwV37r4zYVKMKne3qBvAXvxyp0X1cWmryTHjq9gVQCOjl_RiiU5le-rJR1MssKpB1ZmxuIjgMLeevPfRQkY=w424-h286-no)

##### サーバーをセットアップする

右上のメニューから新しい構成をセットアップします

Setup a new configuration, from the upper right menu

![](https://lh3.googleusercontent.com/JpmTdOOwivzSH29RbeUYaz9zDLfXwenTxSGKo_rJOv1tBitJAJbpzbAl_bxkrvly4eR6D9EtQYWTdT197DkrycHNAjjeklHUVSSrQLZZ6nxlXBg5W562ID0t-RiGMDhw0b0dI2NxlM2Wio2rzTVmn-POwD63QnmmwZ2TCsdAzU_SrYlE3kjKsBVUBYdHnjw4owmxa7RciJfEMG6-4-RcS2ivNAfybYZbD5IzlAE8qwkdRHCw-Tc8vOyAUIjMG2XucB1147p4WBE_Wr8_RkwxWmjYjSXZlxCOgszWOexhApqpKQKPBBkn91QasBVpmjDsHK7BXKhzg2aNQKdN5jSNXqyZxRojSwai5xVEBekgdo8JynA2RgWTCKtvqGt1azcke2UfWBYzoKW6K5xSb4P-kUdeTid4o6NvgLlemScOUVT31tmgRQKU5G2_qKwBEZ-fT_MkePTiy-Cn5Mlv_FtD1axhkXhgXdaA2J7s6i3N_4MipdFcgmtbTF6Wj7QWTUsXPADS1gL-rSseuU-zAJYXuWmoV4diYUuJNlZVSjij8bTSHUcO1IuI13rcARqCcH090Ch_2h6X95YCVebR3u81Ri6hNVE7PE7hh0BQTE3Ugbi33yvDxW0BkRZg2XuNAkpX7JVa3Dzyw72ZmAkKCi9Bmb_8pwEBxlHBSPnRPPC3oFwTuGPJqhOnbY6s=w414-h213-no)

次のウィンドウで、セットアップ新しいPHPのウェブサイト、左上隅からの+記号をクリックして、

In the next window, setup a new PHP web site, by clickin the + sign from the upper left corner

![](https://lh3.googleusercontent.com/l1IzgClrgtH_Vt9LOn0ANWAc87dYmIu2vY4Ik5_6BNhRgPIiA-kwqjvYkQmsox-5aJIOlXvNSb64Bw5yS_xuQUDyonSDUX1EoziBbW1DzF1UizNHJUaipwvrLGxfC8hM-HXXRhIY5oe7k_QUZ64d_qdljsqz5pVAYqCCFdBTScVykuKDaIH3oLkXtj2_4R9nVS2shPWNR9l1hbvMnf8P3clHajFKV_xiIDDjjbJmG5AjL0pJ9y1YXcpM5IrIymMldOU5z2RwL5eFfkBpYvYJVo5BbvnoQhRSuab5xESby6SLTO0nruS_UyZjApArjtuhsPf7X3kiWzS0gJWr63UaZGqNrxH4wGTk2WJugFTWSV7j3cpjTWmT3f2QlPMq13oD8fvaCTT-Cu_gcnWIwJBzTaK8Yahx-pc1g9oJoDVCYzEiuqG1pCGtB6NPSzkHJa84gw9dQW3quH66DZ7f0ObqGm31cKPjlVXBfX90Bur0a7MzZbp1qJxLqCTquw266C4GOYwyKHZCzI_L3EWFDdeUHwa3TtrrXttH0u8nwzi2E02SMp9eim2_qVrcKY49P2_9nSHSRIvg4TQn9vpfY4c2ums-jee3xzNZzAlxurWmlBzygUBWq3PbjSvjPl9F3mT-7rOjuM_Vgmld6RCihvQoHT18kyjxYqdM3mJYfgqWyAlYbl5-DVYiKj85=w1090-h689-no)

サーバーリストから[...]ボタンをクリックして、新しいサーバーを作成します。

create a new server, by clicking the [...] button from the server list.

localhostアドレスを追加し、プロジェクトをdockerサーバー（この場合は/ applicationディレクトリ）にマップします。

Add the localhost address, and map the project to the docker server, in our case, the /application directory.

![](https://lh3.googleusercontent.com/hYdUHTkTReA_21B9JhcWzg9n3Os_p1XUpKW8WEfwlkVQqr7KL9jlezpQkgDu4Gfr2L3Moz5AumKEAt3pQEMYBu5ejCenAfw1IWbZ4Ijm_ZaljNAqfao0XX0kIVNUgUepUcWJW0TYGtIwcHkZoaq9RDwdV9gCb7Gvyyjzi9Bc8Yyl6h62awsoSfBrWuYXEoy5EG3KtdCeppholqlZW1dBQO4bTtebuPUAWTVVip6GGyVzriDeU0DDWpDVt_nwYnSWX3W7ZcONTHTTdEJVNmkBtFU3EOhMpOKTyU7I5lImggolYu67gQYygi2bSW9yW6KJdy6u28MFG-u-muC55Sc4glQfrPHE6z_mEZKXhtEtzcaTQTjw7SkDqXhgvTx-FfExxu32lFiob5h3QiMOCT-2GisRQOtWv9IR1Y7IgAsAIf7-hRK0GXSro-psOy9VHNl1KLQVgkG91o62EEkeCQxrsAEgGWuH6p-CHBMCk2-prCZsGVvTPWZyxxzTJUuPkzqAgjGzdY1-AjQLFtT1UoMKj0PeYzP6tCqIs6s5B3_lCy933VkXakPsApWMJ5NZRTa_gF_iezXRLwU8JoE34RhdLszc8sbTCdRRbGNdEFf-KAsHlNVUNDfZB-AMit1j7te57dqfMf-n1af_cyopCOYb9mOTdxpOkIBdRxgsde943G442PBtTChvUHkg=w1085-h688-no)

これにより、PHPStormで受信したリクエストをデバッグできます。

With this, you will be able to debug incoming request on PHPStorm.