php開発の味方、XdebugがLravel8 Sailでは標準だと使えないので設定します。
コンテナをリビルドするので、時間があるときに行うのが良いかも。
ではでは、行っていきます。
Sailの設定ファイルを書き出し
./vendor/bin/sail artisan sail:publish
[ docker ]ディレクトリがプロジェクト内に作成し、vendorディレクトリ内のSailの設定ファイルがコピーされます。
php.iniを編集
vi ./docker/8.0/php.ini
で、php.iniを開いて、
[PHP]
post_max_size = 100M
upload_max_filesize = 100M
variables_order = EGPCS
# Extensions...
extension=swoole.so
に、以下のように、XDebugの設定を追加します。
[PHP]
post_max_size = 100M
upload_max_filesize = 100M
variables_order = EGPCS
# Extensions...
extension=swoole.so
[XDebug]
xdebug.mode = debug
xdebug.start_with_request = yes
xdebug.client_host = host.docker.internal
次はDockerfileを変更
vi ./docker/8.0/Dockerfile
で開いて、
&& apt-get install -y php8.0-cli php8.0-dev \
php8.0-pgsql php8.0-sqlite3 php8.0-gd \
php8.0-curl php8.0-memcached \
php8.0-imap php8.0-mysql php8.0-mbstring \
php8.0-xml php8.0-zip php8.0-bcmath php8.0-soap \
php8.0-intl php8.0-readline \
php8.0-msgpack php8.0-igbinary php8.0-ldap \
php8.0-redis \
&& php -r "readfile('http://getcomposer.org/installer');" | php -- --install-dir=/usr/bin/ --filename=composer \
ここの php8.0-redis の下などに、
&& apt-get install -y php8.0-cli php8.0-dev \
php8.0-pgsql php8.0-sqlite3 php8.0-gd \
php8.0-curl php8.0-memcached \
php8.0-imap php8.0-mysql php8.0-mbstring \
php8.0-xml php8.0-zip php8.0-bcmath php8.0-soap \
php8.0-intl php8.0-readline \
php8.0-msgpack php8.0-igbinary php8.0-ldap \
php8.0-redis \
php-xdebug \
&& php -r "readfile('http://getcomposer.org/installer');" | php -- --install-dir=/usr/bin/ --filename=composer \
php-xdebugを追加します。
docker-compose.ymlも変更
vi ./docker-compose.yml
で、
laravel.test:
build:
context: ./vendor/laravel/sail/runtimes/8.0
dockerfile: Dockerfile
args:
WWWGROUP: '${WWWGROUP}'
この、[ context ]で指定されたフォルダを今回編集したdockerのディレクトリに変更します。
laravel.test:
build:
context: ./docker/8.0
dockerfile: Dockerfile
args:
WWWGROUP: '${WWWGROUP}'
こんな感じです。
最後にコンテナを再構築
./vendor/bin/sail build --no-cache
ここに少し時間かかりますが、これが終われば。
./vendor/bin/sail shell
sail@b9edddaccbf0:/var/www/html$ php -m | grep xdebug
xdebug
などでモジュールが追加されているのを確認できます。
おまけ
お気づきの方も多いかと思いますが、今回、指定している [ 8.0 ] のディレクトリや記述を [ 7.4 ] に変更してあげれば、すべてが、php v7.4 になります。
Dockerfile 内のタイムゾーンを、
# ENV TZ=UTC
ENV TZ='Asia/Tokyo'
[ Asia/Tokyo ]に変更してコンテナをビルドすることもできますよ。