Ссылка, указанная в вашем вопросе, уже ответила на ваш вопрос. Поскольку мы хотим использовать контейнерную версию папки «node_modules» , мы настроили другой том: -v /app/node_modules
. Теперь вы сможете удалить локальный аромат node_modules
.
Проще говоря, вы хотите использовать все с хоста, полный код, но не node_modules
. так что вы просто сопоставили пустой каталог хоста, чтобы этот трюк позволил вашему контейнеру использовать контейнер node_modules
, а не хост node_modules
.
Есть много факторов, некоторые node_modules зависят от хоста, как x509поэтому он не будет работать в контейнере Linux, если ваша хост-ОС является окном.
первый прием, установка модулей во время сборки докера
COPY package.json /app/package.json
RUN npm install
секунда во время работы контейнера,
docker run --name test -it -v ${PWD}:/app -v /app/node_modules -p 4201:4200 --rm test-app
После запуска вашего контейнера, если вы удалите host node_modules, ваш контейнер будет по-прежнему работать, так как он будет использовать контейнер node_modules.
Одним словом, удалите host node_modules и запустите
docker run --name test -it -v ${PWD}:/app -p 4201:4200 --rm test-app
Не удастся запустить, потому что контейнер /app
завершит переопределение каталога для хоста.
Работа с обходом - простой трюк, который вы упустили понять.
docker run --name test -it -v ${PWD}:/app -v /app/node_modules -p 4201:4200 --rm test-app
Это предотвратит node_modules
контейнера, который нужно переопределить.