Анимация наведения

Установите Node-RED на Docker

Похожие видео

Свяжитесь с нами

WhatsApp / Телефон

некоторые из них, а также поддерживает несколько архитектур (amd64, arm32v6, arm32v7, arm64v8 и s390x).

Начиная с Node-RED 1.0, репозиторий на Docker Hub был переименован в nodered/node-red.

быстрый старт

Чтобы запустить его в Docker в самом простом виде, просто выполните команду:

docker run -it -p 1880:1880 -v node_red_data:/data -name mynodered nodered/node-red

Давайте разберем эту команду:

docker run - запуск этого контейнера, при необходимости первоначальная сборка локально

-it - подключить терминальную сессию, чтобы мы могли видеть, что происходит

-p 1880:1880 - подключить локальный порт 1880 к открытому внутреннему порту 1880

-v node_red_data:/data - монтирует именованный том docker под названием `node_red_data` в каталог /data контейнера, чтобы все изменения, внесенные в потоки, сохранялись.

-name mynodered - присвоить этой машине дружественное локальное имя

nodered/node-red - образ для основы - в настоящее время Node-RED v1.2.0

Выполнение этой команды приведет к появлению окна терминала с запущенным экземпляром Node-RED.

Добро пожаловать в Node-RED

===================

10 Oct 12:57:10 - [info] Версия Node-RED: v1.2.0

10 Oct 12:57:10 - [info] Версия Node.js: v10.22.1

10 Oct 12:57:10 - [info] Linux 4.19.76-linuxkit x64 LE

10 Oct 12:57:11 - [info] Загрузка узлов палитры

10 Oct 12:57:16 - [info] Файл настроек : /data/settings.js

10 Oct 12:57:16 - [info] Контекстное хранилище : 'default' [module=memory]

10 Oct 12:57:16 - [info] Каталог пользователя : /data

10 Oct 12:57:16 - [warn] Проекты отключены : editorTheme.projects.enabled=false

10 Oct 12:57:16 - [info] Файл потоков : /data/flows.json

10 Oct 12:57:16 - [info] Создание нового файла потока

10 Oct 12:57:17 - [warn]

————————————————– ——————-

Ваш файл учетных данных потока шифруется с помощью генерируемого системой ключа.

Если сгенерированный системой ключ по какой-либо причине будет утерян, ваши учетные данные

файл не удастся восстановить, вам придется удалить его и ввести заново

ваши полномочия.

Вы должны задать свой собственный ключ, используя опцию 'credentialSecret' в

файл настроек. После этого Node-RED повторно зашифрует ваши учетные данные

файл, используя выбранный ключ при следующем развертывании изменений.

————————————————– ——————-

10 Oct 12:57:17 - [info] Запуск потоков

10 Oct 12:57:17 - [info] Запущены потоки

10 Oct 12:57:17 - [info] Сервер сейчас работает по адресу http://127.0.0.1:1880/.

[…]

Затем вы можете перейти по адресу http://{host-ip}:1880, чтобы получить привычный рабочий стол Node-RED.

Преимущество этого заключается в том, что, дав ему имя (mynodered), мы можем легче им управлять, а закрепив его, мы узнаем порт хоста, с которым знакомы. Конечно, это означает, что мы можем запускать только один экземпляр за раз... но только один шаг за раз.

Если нас устраивает то, что мы видим, мы можем переключить терминал с помощью Ctrl-p Ctrl-q-, и контейнер продолжит работать в фоновом режиме.

Чтобы снова подключиться к терминалу (просмотреть журнал), выполните команду:

docker attach mynodered

Если вам нужно перезапустить контейнер (например, после перезапуска или перезапуска демона Docker):

docker start mynodered

и при необходимости остановитесь снова:

docker stop mynodered

Изменения изображения

Образы Node-RED основаны на официальных образах Node JS Alpine Linux, чтобы сделать их как можно меньше. Использование Alpine Linux уменьшает размер собранного образа, но удаляет стандартные зависимости, необходимые для компиляции нативных модулей. Если вы хотите добавить нативные зависимости, расширить образ Node-RED недостающими пакетами в работающем контейнере или собрать новый образ, смотрите docker -custom, который находится в README.md в расширенном проекте Node-RED Docker.

Подробные изображения, теги и информацию о манифесте можно найти в readme проекта на Github.

Например: Предположим, что вы работаете на Raspberry PI 3B с архитектурой arm32v7as. Тогда просто выполните следующую команду, чтобы извлечь образ (с меткой 1.2.0-10-arm32v7) и запустить контейнер.

docker run -it -p 1880:1880 -v node_red_data:/data -name mynodered nodered/node-red:latest

Эту же команду можно использовать для запуска на системе amd64, поскольку Docker обнаруживает, что работает на хосте amd64, и извлекает образ с соответствующим ярлыком (1.2.0-10-amd64).

Преимущество этого заключается в том, что вам не нужно знать/указывать архитектуру, на которой вы работаете, а также в том, что команда docker run и файлы docker compose становятся более гибкими и взаимозаменяемыми в разных системах.

Примечание: В настоящее время существует ошибка в определении архитектуры Docker для arm32v6, таких как Raspberry Pi zero или one. Для этих устройств в настоящее время необходимо указывать полный тег образа, например:

docker run -it -p 1880:1880 -v node_red_data:/data -name mynodered nodered/node-red:1.2.0-10-arm32v6

Управление пользовательскими данными

После запуска Node-RED с помощью Docker нам нужно убедиться, что все добавленные узлы или потоки не будут потеряны в случае уничтожения контейнера. Пользовательские данные можно сохранить, смонтировав каталог данных на том за пределами контейнера. Для этого можно использовать связывающее монтирование или именованные тома данных.

Node-RED использует каталог в контейнере /data для хранения данных конфигурации пользователя.

Использование каталога хоста для сохранения (bind mount)

Чтобы сохранить каталог пользователя Node-RED внутри контейнера в каталог хоста вне контейнера, можно воспользоваться следующей командой. Чтобы разрешить доступ к этому каталогу хоста, пользователь node-red внутри контейнера (по умолчанию uid=1000) должен иметь тот же uid, что и владелец каталога хоста.

docker run -it -p 1880:1880 -v /home/pi/.node-red:/data -name mynodered nodered/node-red

В этом примере каталог хоста /home/pi/.node-red привязан к каталогу контейнера /data.

Примечание: Пользователям, переходящим с версии 0.20 на версию 1.0, необходимо убедиться, что все существующие каталоги /data имеют правильное право собственности. Начиная с версии 1.0 это право должно быть 1000:1000. Это можно сделать с помощью команды sudo chown -R 1000:1000 path/to/your/node-red/data

Подробную информацию о разрешениях см. в вики.

Использование именованных томов данных

Docker также поддерживает использование именованных томов данных для хранения постоянных или общих данных за пределами контейнера.

Создайте новый именованный том данных для хранения пользовательских данных и запустите новый контейнер, используя этот том.

$ docker volume create -name node_red_data

$ docker volume ls

ИМЯ ТОМА ДРАЙВЕРА

local node_red_data

$ docker run -it -p 1880:1880 -v node_red_data:/data -name mynodered nodered/node-red

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

$ docker cpmynodered:/data/your/backup/directory

Используя Node-RED для создания и развертывания некоторых примеров процессов, мы теперь можем уничтожить контейнер и запустить новый экземпляр без потери пользовательских данных.

$ docker stop mynodered

$ docker rm mynodered

$ docker run -it -p 1880:1880 -v node_red_data:/data -name mynodered nodered/node-red

обновить

Поскольку /data теперь хранится вне контейнера, обновление базового образа контейнера теперь выглядит следующим образом

$ docker pull nodered/node-red

$ docker stop mynodered

$ docker rm mynodered

$ docker run -it -p 1880:1880 -v node_red_data:/data -name mynodered nodered/node-red

Docker Stack/Docker Written

Ниже приведен пример файла Docker Compose, который может быть запущен с помощью docker stack или docker-compose. Дополнительную информацию о стеке Docker и Docker compose можно найти на официальной странице Docker.

################################################ ############################### Node-RED Стек или композиция################ ################################################ ################### docker stack deploy node-.red -compose-file docker-compose-node-red.yml# docker-compose -f docker-compose-node- red.yml -p myNoderedProject up########################################## ####################################version: "3.7 "Услуги:
Узелок-красный:
изображение: nodered/node-red:latest
окружающая среда:
- TZ=Европа/Амстердам
порты:
– “1880:1880”
сети:
-node-red-net
объемы:
- node-red-data:/datavolumes:
node-red-data:networks:
Узловая красная сеть:

Составьте файл выше:

Создайте службу node red

Извлеките последний красный образ узла

Установите часовой пояс Европа/Амстердам

Соотнесите порт контейнера 1880 с портом хоста 1880

Создайте сеть node-red-net и подключите к ней контейнер

/data сохраняет каталог внутри контейнера на томе в node-red-dataDocker

Dockerfile скопирован в локальные ресурсы

Иногда полезно наполнить образ Node-RED Docker файлами из локальной директории (например, если вы хотите хранить весь проект в git-репозитории). Для этого вам понадобится локальная директория, например, такая:

Dockerfile

README.md

package.json # добавьте все дополнительные узлы, необходимые вашему потоку, в свой собственный package.json.

flows.json # обычное место, где Node-RED хранит ваши потоки

flows_cred.json # учетные данные, которые могут понадобиться вашим потокам

settings.js # ваш файл настроек

Примечание: Этот метод не подходит, если вы хотите подключить том /data извне. Если вам нужно использовать внешний том для сохранения, скопируйте настройки и файлы потока на этот том.

Следующий Dockerfile основан на базовом Docker-образе Node-RED, но дополнительно перемещает в образ ваши собственные файлы:

FROM nodered/node-red

# Скопируйте package.json в WORKDIR, чтобы npm собрал все

# добавленных вами модулей узлов для Node-RED

Скопируйте файл package.json .

RUN npm install -unsafe-perm -no-update-notifier -no-fund -only=production

# Скопируйте _ваши_ файлы проекта Node-RED на место

# ПРИМЕЧАНИЕ: Это сработает только в том случае, если впоследствии вы НЕ будете монтировать /data как внешний том.

# Если вам нужно использовать внешний том для постоянства, то

# скопируйте свои настройки и потоковые файлы на этот том.

Скопируйте файл settings.js /data/settings.js

COPY flows_cred.json /data/flows_cred.json

COPY flows.json /data/flows.json

# Вы должны добавить дополнительные узлы через файл package.json, но вы также можете добавить их здесь:

#WORKDIR /usr/src/node-red

#RUN npm install node-red-node-smooth

ПРИМЕЧАНИЕ: Файл package.json должен содержать опцию запуска в разделе сценария. Например, контейнер по умолчанию выглядит следующим образом:

"scripts": {

"start": "node $NODE_OPTIONS node_modules/node-red/red.js $FLOWS",

Порядок следования Dockerfile и скорость сборки

Хотя это и не обязательно, хорошей идеей будет скопировать package... npm install..., чтобы выполнить эти шаги раньше, потому что в то время как flows.json часто меняется при работе в Node-RED, package.json меняется только при изменении модулей в проекте. будет меняться. А поскольку шаги, которые нужно выполнить при изменении npm install package.json, иногда могут отнимать много времени, хорошей идеей будет выполнить трудоемкие, часто неизменяемые шаги раньше в Dockerfile, чтобы эти образы сборки можно было использовать повторно, делая последующие сборки быстрее.

Учетные данные, секреты и переменные среды

Конечно, вы никогда не захотите жестко кодировать учетные данные где-либо, поэтому если вам нужно использовать учетные данные в проекте Node-RED, приведенный выше Dockerfile позволит вам сделать это в файле settings.js...

module.exports = {

credentialSecret: process.env.NODE_RED_CREDENTIAL_SECRET // добавьте именно это

}

...и затем, когда вы запускаете Docker, вы добавляете переменную окружения в команду запуска...

docker run -e "NODE_RED_CREDENTIAL_SECRET=ваш_секрет_здесь"

Построить и запустить

Обычно вы собираете этот Dockerfile:

docker build -t your-image-name:your-tag .

Для локального запуска в целях разработки, когда изменения записываются сразу, достаточно перейти в каталог проекта из локального каталога, с которым вы работаете, а затем запустить:

docker run -rm -e "NODE_RED_CREDENTIAL_SECRET=your_secret_goes_here" -p 1880:1880 -v `pwd`:/data -name a-container-name your-image-name

запуск

Переменные окружения могут быть переданы в контейнер для настройки времени выполнения Node-RED.

Файл конфигурации потока задается с помощью параметра окружения ( FLOWS ), который по умолчанию имеет значение 'flows.json'. Его можно изменить во время выполнения программы с помощью следующих флагов командной строки.

docker run -it -p 1880:1880 -v node_red_data:/data -e FLOWS=my_flows.json nodered/node-red

Примечание: Если вы задали -e FLOWS="", вы можете задать поток через свойство flowFile в файле settings.js.

Другие полезные переменные окружения включают

-e NODE_RED_ENABLE_SAFE_MODE=false# Установите значение true, чтобы запустить Node-RED в безопасном (нерабочем) режиме.

-e NODE_RED_ENABLE_PROJECTS=false # Установите значение true, чтобы запустить Node-RED и включить функции проекта.

Параметры времени выполнения Node.js можно передать контейнеру с помощью параметров окружения (NODE_OPTIONS). Например, чтобы исправить размер кучи, используемой сборщиком мусора Node.js, вы можете использовать следующую команду.

docker run -it -p 1880:1880 -v node_red_data:/data -e NODE_OPTIONS="-max_old_space_size=128″ nodered/node-red

Ключевые слова: промышленный шлюз

Свяжитесь с нами