Posted at

DockerでVolumeをマウントするとき一部を除外する方法

More than 1 year has passed since last update.

例えば次のようなディレクトリ構成のプロジェクトで、node_modulesだけ除外しつつその他はすべてDockerコンテナにマウントしたいといった場合を想定する。

.

├── docker-compose.yml
├── node_modules … ここだけDockerコンテナに置きたくない
├── package.json
├── src
└── yarn.lock

まず、普通にマウントするdocker-compose.ymlを書く。この状態では当然node_modulesもマウントされる。


docker-compose.yml

services:

app:
image: node
volumes:
- .:/app

次に、適当な名前のボリュームを作る。


docker-compose.yml

+volumes:

+ hoge:
services:
app:
image: node
volumes:
- .:/app

最後に、/app/node_modulesにそのボリュームをマウントするようにする。


docker-compose.yml

volumes:

hoge:
services:
app:
image: node
volumes:
- .:/app
+ - hoge:/app/node_modules

これでホストマシン側のnode_modulesとコンテナのnode_modulesの中は同期されなくなる。