[備忘録]MACで、Dockerのapache+phpコンテナをeclipse(PDT)でデバッグ


忘れるのでメモ。。。

[前提]
・使用するMACはWifi接続。(なので、ローカルのIPが変わる)

・PHPのイメージは、

http://qiita.com/cyclon2joker/items/39e620d3d16fa1f6edf0

を利用。

・eclipse,PDTは、インストール済みであること。


[前準備]
wifiの接続設定にaliasを追加する
1.システム環境設定→ネットワークを起動し、wifiを選択して、歯車アイコンのプルダウンから、
サービスの複製を選択する。

![netconf1.png](https://qiita-image-store.s3.amazonaws.com/0/38889/fe002ce5-3684-ab7c-c8b7-97019329598c.png "netconf1.png")


2.複製した設定にIPを設定する。

![netconf2.png](https://qiita-image-store.s3.amazonaws.com/0/38889/738ba1c8-fd50-4e93-68d6-733faabf9d11.png "netconf2.png")

適当にIPを設定。
192.168.101.254


[Dockerコンテナ作成]
1.作業フォルダを作成。以下、ファイルは作業フォルダに作成。

2.php.iniを作成

```
[Date]
date.timezone = "Asia/Tokyo"
[mbstring]
mbstring.internal_encoding = "UTF-8"
mbstring.language = "Japanese"

```

3.Dockerファイルを作成

```
FROM php:5.6-apache
COPY php.ini /usr/local/etc/php/php.ini
RUN set -ex apk --no-cache add postgresql-dev libpq-dev
RUN apt-get update && apt-get install -y libpq-dev curl emacs && docker-php-ext-install pdo pdo_pgsql mbstring zip
RUN pecl install xdebug \
    && rm -rf /tmp/pear \
    && echo "zend_extension=$(find /usr/local/lib/php/extensions/ -name xdebug.so)\n" >> /usr/local/etc/php/conf.d/xdebug.ini \
\
    && echo "xdebug.remote_enable=1\n" >> /usr/local/etc/php/conf.d/xdebug.ini \
    && echo "xdebug.remote_mode=req\n" >> /usr/local/etc/php/conf.d/xdebug.ini \
    && echo "xdebug.remote_connect_back=0\n" >> /usr/local/etc/php/conf.d/xdebug.ini \
    && echo "xdebug.remote_host=192.168.101.254\n" >> /usr/local/etc/php/conf.d/xdebug.ini \
    && echo "xdebug.remote_autostart=on\n" >> /usr/local/etc/php/conf.d/xdebug.ini \
    && echo "xdebug.idekey=ECLIPSE_DBGP\n" >> /usr/local/etc/php/conf.d/xdebug.ini \
    && echo "xdebug.remote_port=59590\n" >> /usr/local/etc/php/conf.d/xdebug.ini


```

※流用なので、pdo、emacs等関係ない設定あり。
※php.iniは、マウントせず、前述で用意したファイルをコピーすることにした。
※前述のネットワーク設定で複製したIPをXDEBUGに設定。
ポートは59590。
※eclipseを使うので、xdebug.idekey=ECLIPSE_DBGP。



4.ビルド実行

```
docker build -t php:xdebug_test ./

```


5.コンテナ起動。

```
docker run -p 80:80  -v /Users/XXXX/workspace/docker/hoge_xdebug/www/html:/var/www/html --name   xdebug_test -d php:xdebug_test
```

※htmlフォルダはローカルのものをマウント。


ローカルのhtmlフォルダに、以下のPHPファイル（tktk.php）を準備し、ブラウザで確認。

```
<?php echo phpinfo();

```

ブラウザで
http://localhost/tktk.php
を呼び出し確認。

![conf1.png](https://qiita-image-store.s3.amazonaws.com/0/38889/0a7dff3e-288e-5018-0eeb-2d0972c509c2.png "conf1.png")

設定が反映されている。



[eclipse環境作成]
1.適当に、phpプロジェクトを作成。
※コンテナ上のPHPバージョンと合わせる事。
※ソースはコンテナにマウントしているフォルダをリンクする。


2.とりあえず、codeigniter3をダウンロードしてきて、HTMLフォルダ上に展開し、
インデックスが出るか確認。

![conf2.png](https://qiita-image-store.s3.amazonaws.com/0/38889/9f156c08-7c21-9646-9477-3b35b69684d5.png "conf2.png")


とりあえず、インデックスページは出る。


3.eclipseのメニューからRun ->Debug Configurationsで新規デバッグ実行を作成。

![setting1.png](https://qiita-image-store.s3.amazonaws.com/0/38889/b1e0a205-d6a3-d077-14b2-597c008826d2.png "setting1.png")

※ソース位置とURLを合わせる。

ポートがあってないので（デフォルト：9000）、Configureボタンを押して、設定。

![setting2.png](https://qiita-image-store.s3.amazonaws.com/0/38889/a822be19-9561-e199-a4f0-d2f6d4127980.png "setting2.png")


[デバッグ実行]

1.index.phpの適当な位置にブレークポイントを設定。

![setting3.png](https://qiita-image-store.s3.amazonaws.com/0/38889/a9a316fc-9de7-a971-88eb-46762da73528.png "setting3.png")


2.前述で作成したデバッグを実行する。


3.ブラウザで再び、インデックスページを呼び出すと、、、

![conf3.png](https://qiita-image-store.s3.amazonaws.com/0/38889/00ff3ad3-9263-e61c-ba43-de03f82b34fb.png "conf3.png")


設定したブレークポイントの位置でブレークしている。



多分、他のIDEでも、INIファイルのキーを変えてやれば、同じよーに動くはず。。。