Docker + PHP + Laravel の環境を構築したが、画面の表示が遅い!、とにかく遅い!!簡単な画面を表示するだけでも5〜10秒程度かかる。
これではとても開発効率が悪いので、改善する。
スポンサーリンク
遅い原因
この異常な遅さの原因は、主に以下の2つである。
storage/framework 配下のキャッシュ
フレームワークが storage/framework
配下に作るキャッシュファイルとローカルと同期する時に時間がかかる。本来キャッシュファイルは、表示速度の高速化の役割を果たすが、Docker環境下では逆にこれがボトルネックになる。
vendor 配下のライブラリ群
Laravelでは vendor
配下に必要なライブラリをインストールするため、このフォルダの中には大量のファイルが生成される。そして上の storage/framework
と同じ理由でローカル側との同期に時間がかかっているようだ。
対策
つまり、storage/framework
と vendor
の2つディレクトリが、ホスト側と同期しなければよい。
docker-compose.yml
を編集して、storage/framework
と vendor
用のボリューム
マウントを作成し、ローカルと同期しないようにする。
※ 今回のサンプルは /workspace/src/
の下に Laravelのプロジェクトが作成されている前提としています。
services:
php:
build: ./docker/php
volumes:
- ../:/workspace:cached
- /workspace/src/storage/framework
- /workspace/src/vendor
上記のようにすることで、ローカルとの同期はなくなるが、コンテナ起動時にキャッシュ用のディレクトがマウントされないので dockerfile
を編集して、フォルダの作成とアクセス権の設定をする。
~~ 中略 ~~
WORKDIR /workspace
RUN composer global require "laravel/installer"
RUN mkdir -p /workspace/src/storage/framework/cache/data && \
mkdir -p /workspace/src/storage/framework/sessions && \
mkdir -p /workspace/src/storage/framework/views && \
mkdir -p /workspace/src/storage/framework/testing && \
chmod -R 777 /workspace/src/storage
vendor
もマウントされないため、少し手間ではあるが、新しくコンテナを起動するたびに composer install
で必要なライブラリをインストールする。
cd src
composer install
スポンサーリンク
めっちゃ早くなった!!
実際に上記のように設定して、起動してみたら、元々 5〜10秒かかっていた画面表示が、1秒程度で表示されるようになり、劇的に改善された。
0 件のコメント:
コメントを投稿