【Docker】LaravelとかVueのレスポンスがやたら遅い時に

現象

Dockerで構築した環境があり、Chrome等でアクセスしたときにレスポンスがやたらと遅いのを解決したい。
遅い時は5秒以上かかったりする。

Laravel用のプロジェクトや、フレームワークなしPHP+VueSPAのプロジェクトなどで起きた。

環境

Windows 11 Pro
Docker Engine v27.0.3
PHP 8.3
Laravel 11

Docker構成

環境1

Laravel
Postgres
Nginx

環境2

PHP
Mysql
Nginx
Node

解決方法

node_modulesやvendorディレクトリをちゃんとVolumeに入れるようにする

docker-compose.yml抜粋

環境1

services:
  laravel:
    build:
      context: .
      dockerfile: ./container/laravel/Dockerfile
    ports:
      - 5173:5173
    volumes:
      - ../project/:{プロジェクトパス}
      - project_node_modules_volume:{プロジェクトパス}/node_modules
      - project_vendor_volume:{プロジェクトパス}/vendor

...

環境2

...
  node:
    build:
      context: .
      dockerfile: ./docker/node/Dockerfile
    ports:
      - 8081:8081
    depends_on:
      - app
    stdin_open: true
    tty: true
    volumes:
      - ../vue:/vue
      - node_modules_volume:/vue/node_modules
...

推測

どうもマウントしているファイルを読むのがコスト高そうな感じ。できるだけマウントファイルを少なくすると良さそう。

でもvendorないとIDEが検索してくれないから嫌

ローカルにvendorファイルがなくなる(マウントしなくなる)のでPHPStormでwarningが増えるし、補完してくれなくなります。
なのでコンテナからローカルにコピーしましょう。(composerライブラリが増えるたびに実行する必要はありますが…)

以下でまずlaravel(PHP)のコンテナIDを確認します。

docker ps

そのコンテナからローカルにコピーします。(パスをよく考えること!)

docker cp {コンテナID}:{コンテナ内のvendor絶対パス} {ローカルにコピーしたいパス}

//例
docker cp 83f1f98d3e7d:/var/www/project/vendor/ ./

指定のローカルパス配下にvendorディレクトリが作成されるので軽くテストしてから実行しましょう。

以下記事を一読せよ:
https://qiita.com/RyotaIshii/items/25beeafaa836b4f4819c

「【Docker】LaravelとかVueのレスポンスがやたら遅い時に」への1件のフィードバック

  1. ピンバック: 【Docker】Vue.jsのSPA開発環境(Node+PHP+Nginx+Mysql) – 技術ブログ

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

上部へスクロール