JavaScriptを有効にしてください

【Docker】volume をマウントする時に特定の一部ディレクトリを除外する

 ·  ☕ 1 分で読めます

【Docker】volume をマウントする時に一部ディレクトリを除外する

Docker+PHP 環境が遅かったので vendor フォルダを同期しないように volume をマウントする時に一部ディレクトリを除外して対応したメモ。

この対応で速度が2倍ほどになりました。
vendor 内のファイル数が多いほど効果は高そうです。

Dokcer PHP の環境が遅い原因

Dockerはホストとコンテナ間でファイル同期の処理が行われるため、同期対象のファイルが多ければ多いほど遅くなる。

対処方法

対象方法は大量にファイルが置かれている vendor を同期しないように致しました。

ボリュームを使用する

ホストのからマウントをしないで volume を使う。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
version: '3'

services:
  php:
    image: php:8.1-apache
    volumes:
      - ./src:/var/www/html
      # volume mount
      - vendor-valume:/var/www/html/vendor # vendorをvolumeにマウント
    ports:
      - 80:80

# volumes
volumes:
  vendor-valume: # vendor用のvolume

特定ディレクトリをマウントしない

共有するソースのうち一部を共有しないように設定する。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
version: '3'

services:
  php:
    image: php:8.1-apache
    volumes:
      - ./src:/var/www/html
      # exclude directory
      - /var/www/html/vendor # 除外するディレクトリ
    ports:
      - 80:80

# volumes
volumes:
  vendor-valume: # vendor用のvolume

参考

【検証】React.FC と React.VFC はべつに使わなくていい説 – KRAY Inc

共有

こぴぺたん
著者
こぴぺたん
Copy & Paste Engineer