DockerでLaravelを動作させる際に、やたらと遅いと感じる事があります。
理由はLaravelプロジェクト内のnode_modulesとvendorがホストマシンと同期されている
場合に発生する、同期処理の遅さにあるようです。なので、同期を外せば高速なレスポンスが
得られます。
方法は簡単で、docker-compose.ymlファイルのvolumesの記述を変更するだけです。
docker-compose.ymlファイルでのvolumes設定
decker-compose.ymlファイルの記述で、2つのフォルダをコンテナ内に保存させる。
同期場所をホストマシン(Windows側)ではなく、Docker(Linux側)にする。
version: "3"
volumes:
node_modules_store: # Docker内に保存場所を名前付きで確保
vendor_store: # 追加
services:
app:
container_name: "app"
volumes:
- .:/var/www/html #docker-compse.yml
- node_modules_store:/var/www/html/プロジェクト名/node_modules #追記
- vendor_store:/var/www/html/プロジェクト名/vendor #追記
上記で、名前付きボリュームを作成して、コンテナ内に保存できます。
注意点は、
/varからはじまり、node_modulesやvendorまでのパスを正確に設定する事です。
VSCodeの Remote Developmentでコンテナを立ち上げて、プロジェクトフォルダに移動
すると、空のnode_modulesとvendorフォルダが確認できます。
空なので、モジュール群をインストールする必要があります。
npmでLaravelプロジェクトにnode_modulesをインストール
npm install
composerでLaravelプロジェクトにvendorをインストール
composer install
成功すれば、Docker Desktopで中身が確認できます。空なら失敗となります。

vendor_storeも同様にDocker Desktop->volumes->Dockerプロジェクト名+vendor_store
で確認できます。


