Laravel + Vue.js を使った開発をしている中で、「Sailって使わなきゃダメ?」「Docker重すぎるんだけど…」と思ったことがある人は多いはず。自分の開発スタイルを見直す機会にもなったので、備忘録としてまとめます。
結論:ローカル実行で全く問題なし
現在、自分は以下のような構成で開発しています。
php artisan serve
(Laravel)npm run dev
(Vue.js / Vite)- DBやRedisなど一部だけDockerで起動
Docker(Laravel Sail)は使っていませんが、全く困っていません。
なぜDockerが重いのか?
特にMacやWindows環境では、DockerのファイルI/O(マウント)がとにかく遅い。
node_modules
やvendor
の大量ファイルで激重に- HMR(Hot Module Replacement)がうまく動かない or 激遅
- **HMRは使用できないという欠点がある。**更新が1〜2分程度かかることもあり、HMRのリアルタイム更新という利点が完全に失われてしまう。
- Bladeファイルの更新も、Docker上では反映に時間がかかるケースがあり、テンプレート修正の確認作業がストレスになる
npm install
に時間がかかりすぎて地獄
開発ストレスが非常に高くなる要因です。
Laravel Sailとは?
Sail は Laravel の公式 Docker 環境です。つまり、Sailを使う=Docker上でLaravelを実行することになります。
./vendor/bin/sail up -d # コンテナ起動
./vendor/bin/sail artisan ... # Artisan コマンド実行
./vendor/bin/sail npm run dev # npm 実行
便利な面もありますが、Dockerを前提とした環境になるため、ローカル開発が重くなりがちです。
Sailを使わないメリット
項目 | Sailなし(ローカル)開発のメリット |
---|---|
起動速度 | 爆速。ファイルI/Oも軽快 |
HMR | きちんと動く(ViteやWebpackの開発体験が快適) |
理解しやすさ | Laravelの構造や挙動が直接見える |
デバッグ | Xdebugやtelescope等も導入しやすい |
柔軟性 | 開発ツールをホストマシンに自由に構成できる |
どんな時にSailを使うべき?
- 初学者で環境構築が不安
- チームで環境を統一したい
- CI/CDをDockerで統一している
- 開発環境を完全に本番に近づけたい
ただし、ローカル開発の快適さとはトレードオフです。
Tips:sailコマンドでよく使うもの
./vendor/bin/sail up -d # コンテナ起動
./vendor/bin/sail down # 停止
./vendor/bin/sail shell # コンテナに入る
./vendor/bin/sail artisan migrate
./vendor/bin/sail composer install
./vendor/bin/sail npm run dev
エイリアス登録すると楽:
alias sail='[ -f sail ] && bash sail || bash vendor/bin/sail'
まとめ
- ローカル実行で
php artisan serve
+npm run dev
が今のところ最も快適 - Docker(Sail)は環境統一やCI用には良いが、ローカル開発には重い
- 開発体験重視なら、ローカル優先がオススメ
本番環境と開発環境のバランスをどう取るか、自分のスタイルに合わせて選ぶのが正解。
今後は .env
設定や、DBだけDockerで動かす構成例なども追記していく予定。