Laravel sailでLaravel開発&デバッグ環境構築

Laravelロゴ

動作環境
今回の環境は以下の通り
Ubuntu
Docker(インストール済み)

作業環境は
Windows10Pro
VSCode
DockerDesktop

今回は、Ubuntu上で構築したDocker環境を、Windows10から接続したPCでリモートアクセスする環境を構築しています。

LaravelSail

LaravelSailはLaravelの開発環境をDockerで動作させるためのユーティリティーです。
コマンド一つでLaravelの開発環境を一発で作成可能です。

LaravelSailの導入

まず、sailのためにLaravelをインストールします。開発用環境のUbuntuにログインして以下のようなシェルを実行します。なお、Dockerはすでに導入済みです。

curl -s https://laravel.build/sample-app | bash

sample-appの部分はプロジェクト名で好きな名前にすることができます。
実行すると、プロジェクト名のフォルダが作成されLaravelのコードが展開されます。

コンテナ起動

コンテナの起動は、通常dockerやdocker-composeコマンドで行いますが、sailでは専用のコマンド、sailで操作します。

./vendor/bin/sail up

初回の起動には非常に時間がかかりますが、コンテナ起動後にローカルホストもしくは、IPアドレスにアクセスするといつものLaravel初期画面が表示されます。

Ctrl+Dで強制終了ができます。

エイリアス設定

./vendor/bin/sail というコマンドですが、長いので入力が面倒です。
ということで、エイリアス設定で、sailだけで起動できるようにします。
ubuntuの場合は
~/.bashrc ファイルの最後に、以下の記述し、再起動します。

# Laravel Sail Command Alias
alias sail="./vendor/bin/sail"

これで、インストールしたフォルダでsailと打つだけでコマンドの実行が可能になります。

コンテナの操作

sailコマンド
Laravel Sail で起動させた場合、コンテナの起動・停止やartisan コマンド等は sail コマンドを使う事で実行できます。

sail command

command部分は、基本的にdockerとほぼ同じです。

コンテナ起動はup

sail up -d

コンテナ停止はdown

sail down

コンテナへの接続はshellだけで可能(アプリケーションコンテナに接続されるようです)

sail shell

APPコンテナ以外のほかのコンテナに入りたい場合はexecコマンドで可能。docker-composeと同じです。

sail exec mysql bash

artisanコマンド

sail artisan command

VSCode上でのデバッグ

それではVSCode上でのLaravelのデバッグを試してみます。

ホスト側の設定

まず、.evn ファイル(インストールしたルートにあるもの)に以下の追記します

SAIL_XDEBUG_MODE=develop,debug

Dockerファイルを修正するために、以下のコマンドでDockerファイルをかき出します。

sail up -d
sail artisan sail:publish
sail down

※コンテナが起動していないとダメみたいなので、いったん起動している
成功すると、dockerフォルダができているはずです。
docker-compose.ymlも一部変更されていて、詳細は省きますがphpのバージョンを指定したい場合はこちらを修正することで可能なようです。

services:
  laravel.test:
    build:
     context: ./docker/8.0
     dockerfile: Dockerfile
以下略

laravel.test: build: context を見ると、PHPは8.0を使っているようでそのファイルを書き換える必要があります。場所は docker/8.8/php.ini で、以下を追記します。

[XDebug]
xdebug.mode = debug
xdebug.start_with_request = yes
xdebug.client_host = host.docker.internal

設定を反映させるためにイメージをリビルドします。–no-cacheを付けないと失敗することがあるようです。

docker build --no-cache

リモート側の設定

VSCodeをインストールして、下記の拡張機能をインストールします。
PHP Debug
リモートエクスプローラ
Dockerをローカルで動かしている場合はリモートエクスプローラは不要です。
リモート接続の場合はリモートエクスプローラの機能を使ってSSH経由でホストサーバーに接続して作業します。

VSCodeのフォルダを開くから、LaravelSailをインストールしたフォルダを開きます。

lanche.json に以下を追加

{
  "name": "Listen for Xdebug",
  "type": "php",
  "request": "launch",
  "port": 9003,
  "pathMappings": {
    "/var/www/html": "${workspaceFolder}"
  },
},

これで、VSCode上からデバッグを実行してみましょう。
とりあえず、routes/web.phpの view(‘wellcome’); の行にブレークポイントを設定してトップページにアクセスするとブレークがかかることが確認できると思います。

PHPフレームワーク Laravel実践開発
アプリケーション開発には、基本のMVC以外の機能実装が非常に重要になります。本書は、既刊『PHPフレームワーク Laravel入門』を読み終わった方に向けて、もっと知りたいという要望の高かったMVC以外の機能実装の手法を解説します。コア機能...
Amazon.co.jp
タイトルとURLをコピーしました