全体
Dockerfile
で yarn install
*1 をして node_modules
配下にライブラリがインストールされたイメージが作成されたとします。このイメージからコンテナを作成する場合、例えば /path/to:/app
のようにボリュームを指定すると、せっかく作られた node_modules
が跡形もなく消え去ってしまいます。
これを防ぎます。
方法
local にボリュームを作成し、そこにコンテナの node_modules
を同期させるようにします。
docker-compose.yml
で例を示します。
version: '3.8' services: web: (中略) volumes: - npms_storage:/myapp/node_modules - /path/to:/myapp (中略) volumes: npms_storage:
上記のように書くことで、コンテナ作成時に node_modules
は維持されます。
そしてまた、コンテナ側の node_modules
とホスト側の node_modules
は別物になる(=同期されない)ので、例えば ESLint や Prettier などのリアルタイム Lint を使えることになります*2。