Это происходит потому, что установленная директория node_modules внутри контейнера заменяется при монтировании тома.
Я бы рекомендовал изменить структуру каталогов, чтобы поместить код приложения в отдельный каталог, например app/
docker-compose.yml
backend/
- Dockerfile-node
- package.json
- app/
- my_backend.js
Затем можно смонтировать только каталог app/
как том:
version: "3.5"
services:
node:
build:
context: ./backend
dockerfile: Dockerfile-node
ports:
- 5808:5808
volumes:
- ${PWD}/backend/app:/backend/app
Таким образом, ваши node_modules устанавливаются в каталог по сравнению с app/
и, следовательно, не удаляются при монтировании тома.
Теперь вы можете обновить скрипт package.json :
"scripts" : {
"start" : "nodemon app/my_backend.js"
}
... и вам также потребуется обновить любые пути импорта, используемые в коде вашего приложения, чтобы отразить новую структуру каталогов.
Надеюсь, это поможет.