docker #node-red #docker-container
#docker #узел-красный #docker-контейнер
Вопрос:
я новичок в node-red и docker. Для моей стажировки меня попросили преобразовать вложенный поток в модуль (чтобы он был в палитре каждого созданного экземпляра node-RED) Итак, я начал с небольшого примера, показывающего, как добавить пользовательский узел в качестве модуля, выполнив следующие шаги (node-RED устанавливается вконтейнер docker):
- подключение к компьютеру ec2
- переход внутрь контейнера путем выполнения команды docker exec -это mynodered /bin/bash/
и затем я выполняю шаги, как показано в этом примере https://techeplanet.com/how-to-create-custom-node-in-node-red / чтобы создать узел и установить его. После этого я перешел в «палитру управления», чтобы найти недавно установленный модуль, но его там нет… Если кто-нибудь может помочь, я буду признателен за это. Спасибо
Ответ №1:
Во-первых, узлы, установленные в командной строке с npm
помощью, не будут отображаться до перезапуска Node-RED.
Проблема с этим в вашем случае заключается в том, что вы создали узел в контейнере docker, при обычных обстоятельствах все файлы, которые вы создали в запущенном контейнере, будут потеряны при его перезапуске. Это связано с тем, что контейнеры не сохраняют изменения.
Также в контейнере docker UserDir не ~/.node-red
является, но /data
.
Поэтому, когда вы перезапускаете контейнер, узел, скорее всего, будет потерян, и он также не будет установлен в node_modules
каталог в /data
UserDir, если вы не сделали /data
резервную копию постоянным томом.
Если вы хотите создать узел на своем локальном компьютере, вы можете протестировать его локально, используя npm для его установки, а затем перезапустить локальный экземпляр Node-RED, чтобы получить новый узел.
Затем вы можете использовать npm pack
команду для создания файла tgz, который вы можете загрузить в удаленный экземпляр через диспетчер палитр, чтобы при необходимости протестировать его в контейнере Docker.
Для более длительного использования этого нового узла у вас есть несколько вариантов:
- Опубликуйте узел в общедоступном npm с подходящими тегами и добавьте его в общедоступный список узлов Node-RED, как описано в документе. Это позволит любому установить узел. Вы должны делать это ТОЛЬКО с узлами, которые, как вы ожидаете, кто-нибудь сможет использовать
- Создайте пользовательский контейнер docker, который устанавливает ваш узел как часть процесса сборки. Примеры того, как это сделать, приведены здесь
- Создайте пользовательский контейнер docker с пользовательским
settings.js
, который указывает на частное репозиторий npm и службу каталогов, которая позволит вам размещать пользовательские узлы. Сообщение в блоге, касающееся этого, находится здесь
Во-вторых, руководство, которому вы следуете, предназначено для построения узлов с КРАСНЫМ узлом, но не для преобразования вложенного потока в узел. Хотя можно полностью переопределить вложенный поток с нуля, для этого, вероятно, потребуется воссоздать много работы, проделанной в используемых узлах, это не совсем эффективный подход. Продолжается работа по созданию инструмента, который будет автоматически преобразовывать вложенные потоки в узлы, но он еще не готов к выпуску.
Я предлагаю вам присоединиться к форуму Node-RED Slack или Discourse, чтобы получать уведомления, когда он будет доступен.
Комментарии:
1. я не знаю, что сказать. большое вам спасибо, вы все объяснили! это приятно !