Есть подозрение, почему обновление образа моего узла Docker постоянно выходит из строя, сообщая, что он не может найти / bin / node в контейнере

#node.js #docker #node-modules #nodemon

#node.js #докер #модули узла #nodemon

Вопрос:

Мое приложение node доставляло мне некоторые проблемы, когда я добавлял некоторые крючки модели Bookshelfjs, и через некоторое время я пришел к выводу, что я мог / должен обновить версию узла

Я обновил с 14.8 до 15 во всех моих Dockerfile (ах), но мое основное приложение просто отказывается запускаться, говоря:

 cross-env NODE_ENV=development nodemon server.js
/app/app-name/node_modules/.bin/../node/bin/node: 1: /app/app-name/node_modules/.bin/../node/bin/node: This: not found
 

Я попытался удалить nodemon и развернуть контейнер приложения node , однако это дало те же результаты. Я также убедился, что обновил версии пакетов, которые я использую, как я подозревал cross-env , или nodemon не работал с более новой версией узла (это тоже не сработало). Похоже, мне нужно создать / обновить символическую ссылку на то, где находится узел, но я не уверен, как подойти к этому с контейнером Docker, который не запускается.

Какие-либо подсказки, чтобы направить меня в правильном направлении здесь?

Комментарии:

1. Вы запускаете контейнер с томом для своего node_modules каталога? Содержимое этого тома никогда не будет обновляться и, вероятно, указывает на старую версию Node. Удаление подключений тома, которые перезаписывают код в изображении, может решить проблему.

2. Да, поэтому я создавал анонимный том для node_modules ( - /app/app-name/node_modules ), чтобы локальная папка не была скопирована. Я попытался прокомментировать это и выполнить rebuild ( docker-compose up -d --build --force-recreate ), но, возможно, я не все сделал в правильном порядке (например docker-compose down -v , или очистил существующие данные в Docker / Desktop перед восстановлением. С тех пор я сделал это, выполнил перестройку, и, похоже, проблема не устранена :/

3. Кажется, я где-то ошибся на этом пути… При обновлении моего локального node.js версию (с использованием NVM), я каким-то образом фактически установил node как зависимость пакета в упомянутом приложении. Удаление этого и перестройка (без анонимного тома, включенного в docker-compose.yml) исправили мое приложение. Я оставлю громкость, поскольку это, похоже, предотвращает возникновение других подобных проблем. Спасибо @david-maze