WSL2 が公開されてからというもの、何をやるにも環境は Docker on WSL2 上で行っています。
特に VSCode との相性がよく、VSCode Remote Container を使うと、コンテナの立ち上げからシェルへのアタッチまで行ってくれます。
.devcontainer.json
というファイルに、コンテナビルド時にインストールする拡張機能が書けるので、.devcontainer.json
やDockerfile
、docker-compose.yaml
をひとまとめにした.devcontainer
ディレクトリを共有するだけで、WSL2 が有効で VSCode を使っていればすぐにでも同じ環境がいくつでも作れます。
エディタの好みはあるでしょうが、モダンな多機能エディタというと VSCode なので、入れない理由がありません。
Vim や Emacs を使いたければキーバインドを足せばいいだけです。
そんな便利な Docker on WSL2 ですが、Laravel の開発環境が大変重いです。
nginx を入れていない、PHP(+Node)と MySQL のお手軽構築なのですが、最適化をしていないせいか一つのリクエストが返ってくるまでに 3 秒近く待たされます。
また SPA の場合、Lavavel-Mix を使って JavaScript ファイルのバンドルやビルドを実行するのですが、これまた重く、100 秒近くかかります。
これでは快適な開発環境とは呼べないので、最適化をしなければならないですが、まだ Docker on WSL2 の情報が少ないのが現状で、手探りでオレオレ流最適化をする必要がありそうです。
現状で実行したのは、
- OPcache の有効化
- node_modules をマウントしない
ぐらいです。
PHP と Node の両方がボトルネックとなっているので、かなり険しいです。