Docker Desktop for Mac + Laravel Sail 高速化

speed-boost-docker-desktop-for-mac Docker

Docker Desktop for Mac 上でLaravelを用いた開発を始めた。

初学者にとって開発環境構築は最初のハードルになりがちだが、Laravelではそれを解決する仕組みがすでに用意されている。
https://readouble.com/laravel/9.x/ja/sail.html

Laravel Sailは、Docker開発環境を操作するための軽量コマンドラインインターフェイスで、こちらを活用することですぐに開発に着手することができた。

しかしながら、開発序盤でストレスフルな状況に遭遇。今回取り上げる”Docker Desktop for Mac重すぎ問題”である。

Laravel + Docker Desktop for Mac環境が重すぎる件

最初に違和感を覚えたのは、軽量な画面の描画にも異様に時間がかかったということだ。

その後はMigrationなど何をするにも時間がかかり、さすがに開発効率が悪かったため、調査することにした。

結論から述べると、Dockerの”virtiofs”と呼ばれるファイル共有に関するオプションに設定を変更することで、課題は解消された。


1. Verify that you are on the following macOS version:
* macOS 12.2 or later (for Apple Silicon)
* macOS 12.3 or later (for Intel)


◾️手順
①Docker Desktop for Mac画面左上の設定(歯車アイコン)を押下
②Settings画面[General]:Choose file sharing implementation for your containersで”VirtioFS”を選択(※)
③[Apply & restart]ボタンを押下

※当該項目が表示されていない場合は、Dockerを最新バージョンに要更新(Settings画面[Software updates])
※デフォルト値は”gRPC-FUSE”


◾️記事執筆時の環境
・macOS(Ventura 13.3.1)
・Docker Desktop for Mac(version 4.22.1)


この“virtiofs”オプションはmacOSユーザー向けにファイル共有のパフォーマンスを大幅に向上させるための1ソリューションとして、ユーザー待望のリリースであったようである。

今回の原因について簡潔に述べるなら、ホストとコンテナがボリュームを介して同期を取り続けることがパフォーマンスに影響を与えていたということになるだろうか。

◾️参考記事
『Speed boost achievement unlocked on Docker Desktop 4.6 for Mac』
https://www.docker.com/blog/speed-boost-achievement-unlocked-on-docker-desktop-4-6-for-mac/


先達の悪戦苦闘した足跡が検索上位に連なっていて、心理的な障壁も高くなっていたのですが、同様の事象に悩んでいる開発者の一助となれば幸いです。