При текущей настройке во время сборки образа вы запускаете npm install
, который создает и заполняет папку node_modules внутри образа.
Когда вы запускаете контейнер из этого образа, с вашим текущим файлом docker-compose.yml, docker создает новый том со случайным именем, копирует содержимое из папки node_modules изображения в эти новые тома и монтирует том на папка node_modules.
Ваше обновление в package.json будет видно внутри контейнера, потому что вы монтируете свою текущую папку как / usr / src / app (это скрывает версию, упакованную в образе).
Вы не упомянули, как работает npm install
после обновления файла package.json. Я предполагаю, что вы запускаете его прямо на хосте. Если все правильно, это ваша проблема: она не будет работать, потому что ваша папка node_modules связана с томом докера, а не с вашей локальной папкой. Вам нужно запустить npm install
внутри контейнера, выполнив что-то вроде docker-compose exec web npm install
.