Запуск Docker-контейнера с приложением node.js приводит к ошибке; жалуется на ПУТЬ

Я некоторое время бился об эту стену головой и мне нужна небольшая помощь.

У меня есть докер-контейнер, собранный из Dockerfile. Когда я пытаюсь запустить этот контейнер (интерактивно [-i] или отдельно [-d]), он выдает следующую ошибку:

  

2014/06/04 21:17:40 exec: "узел": исполняемый файл не найден в $ PATH

Вот как я пытаюсь запустить контейнер (сделан из общего в целях безопасности):

  

sudo docker run -i -t -p порт: порт имя контейнера: узел версии контейнера /path/to/node/app/nodeapp.js

Что неприятно и сбивает с толку, так это то, что когда я запускаю контейнер без добавления этой команды, я могу перейти в каталог /path /to /node /app и выполнить:

  

node nodeapp.js

Это прекрасно работает для меня. Кроме того, когда я сравниваю содержимое команды «which node» и вывод «echo $ PATH», я вижу, что все является кошерным. Итак, почему, черт возьми, это отказывается признать, что я его хозяин, и он должен делать то, что я говорю?

7 голосов | спросил Jacob 5 J0000006Europe/Moscow 2014, 01:35:33

4 ответа


0

nodejs должно работать.

Не знаю почему, но он установил с именем nodejs, а не node в моем случае.

ответил Ephemera 20 J0000006Europe/Moscow 2014, 10:54:50
0

В вашем Dockerfile убедитесь, что ваш WORKDIR установлен и CMD инструкция выглядит следующим образом:

CMD ["npm", "start"] или

CMD ["node", "nodeapp.js"]

ответил Josh Habdas 14 +04002014-10-14T02:31:45+04:00312014bEurope/MoscowTue, 14 Oct 2014 02:31:45 +0400 2014, 02:31:45
0

Попробуйте запустить его так:

sudo docker run -i -t -p port:port containername:containerversion /path/to/node/bin/node /path/to/node/app/nodeapp.js

Должно быть возможно добавить его к вашему пути, но я не знаю как. Но даже если бы вы могли, все же имеет смысл использовать полный путь, как описано выше, потому что вы не случайно случайно запустили бы другой node .

ответил ivant 5 J0000006Europe/Moscow 2014, 18:36:54
0

Я понимаю, что у вас уже есть ответ. Что правильно.

Однако я тоже столкнулся с этой ошибкой и через 15 минут обнаружил, что ошибка была: exec: "node ": executable file not found in $PATH, а не exec: "node": executable file not found in $PATH

Я случайно добавил space в CMD. Который я не уловил.

Итак, у меня было: CMD ["node ", "script.js"] вместо CMD ["node", "script.js"]

Чтобы сэкономить время другим. Сначала проверьте, есть ли в команде пробел.

ответил Byebye 13 J0000006Europe/Moscow 2018, 16:40:04

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132