Volume Trick node_modules при создании углового приложения с помощью докера - PullRequest
0 голосов
/ 31 октября 2019

Я пытаюсь использовать Docker и использовать его с угловым приложением. Я следую этим шагам: https://mherman.org/blog/dockerizing-an-angular-app/

Но я не понял хитрости с node_modules. Я знаю, что нам нужно запустить Docker со следующими параметрами -v ${PWD}:/app, чтобы связать файлы хоста в контейнере. Но я не получаю часть с параметром -v /app/node_modules. Как Docker может создать том с копией /app/node_modules из контейнера, если он скрыт привязкой хоста?

1 Ответ

0 голосов
/ 01 ноября 2019

Ссылка, указанная в вашем вопросе, уже ответила на ваш вопрос. Поскольку мы хотим использовать контейнерную версию папки «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 контейнера, который нужно переопределить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...