【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