経緯
アプリケーションの開発・検証環境として Docker を利用する際に、アプリケーション本体は volumes
としてマウントしたいです。
しかし、ファイル数が多く容量も肥大化しがちなパッケージ達のいる Node.js の node_modules
や Composer の vendor
は除外したい、というようなケースでどうしようか、という一つの対処方法としてメモ。
対応
version: '3.9'
services:
web:
volumes:
# apache virtual host
- ./apache/www:/var/www/$WEB_ROOT_DIRECTORY/web
通常であればこのようにドキュメントルート以下を全て volumes
としてマウントしますが。
version: '3.9'
volumes:
dummy:
services:
web:
volumes:
# apache virtual host
- ./apache/www:/var/www/$WEB_ROOT_DIRECTORY/web
- dummy:/var/www/$WEB_ROOT_DIRECTORY/web/SOME_PHP_PROJECT/vendor
このような形にします。
ダミーの volumes
を作成し、そこに除外したいディレクトリのパスを記述することで、ダミーの volumes
の方がマウントされるため仮想マシン上の vendor
等がホストマシンとは同期されなくなる、ということですね。
これでファイル数が多いためにマウントに時間を費やしていた部分がかなり高速化できるので時短になります。