Преобразование вложенных потоков в модули в узле-КРАСНЫЙ

docker #node-red #docker-container

#docker #узел-красный #docker-контейнер

Вопрос:

я новичок в node-red и docker. Для моей стажировки меня попросили преобразовать вложенный поток в модуль (чтобы он был в палитре каждого созданного экземпляра node-RED) Итак, я начал с небольшого примера, показывающего, как добавить пользовательский узел в качестве модуля, выполнив следующие шаги (node-RED устанавливается вконтейнер docker):

  1. подключение к компьютеру ec2
  2. переход внутрь контейнера путем выполнения команды 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. я не знаю, что сказать. большое вам спасибо, вы все объяснили! это приятно !