Как автоматически развернуть экземпляр Node-RED в Docker (включая дополнительные узлы)? - PullRequest
0 голосов
/ 12 апреля 2020

Я хотел бы автоматически развернуть экземпляр Node-RED, используя docker -compose.

Цель состоит в том, чтобы развернуть:

  • Потоки (DONE - путем заполнения /data/flows.json)
  • Настройки (DONE - путем заполнения /data/settings.js)
  • Учетные данные для входа (DONE - настройки. js)
  • Часовой пояс (DONE - docker - compose.yml)
  • Дополнительные узлы ( НЕ готово)

Я не могу понять, как развернуть палитры при первом запуске, по сути, этого будет достаточно запустить cd /data; npm install при первом запуске.

Вот мой docker-compose.yml файл:

version: '2'

services:
  nodered:
    image: nodered/node-red
    user: root:root             # necessary, otherwise we get 'access denied'
    environment:
      TZ: Europe/Amsterdam
    ports:
      - "1880:1880"
    volumes:
      - ./data:/data

Ответы [ 2 ]

1 голос
/ 12 апреля 2020

Вы создаете свой собственный контейнер Docker, который расширяет контейнер nodered/node-red и включает ваш собственный package.json, в котором есть дополнительные узлы, которые вы хотите включить в раздел dependencies.

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

Более подробные инструкции можно найти в проекте node-red- docker на github здесь

0 голосов
/ 13 апреля 2020

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

Плюсы:

  • Легкий
  • Работает без клонирования официального изображения
  • Не требует перестроения при изменении зависимостей

Минусы:

  • Мне не нравится самая последняя строка моей точки входа. sh (поскольку мне пришлось скопировать его из официального образа)

Изменено docker -compose.yml:

version: '2'

services:
  nodered:
    image: nodered/node-red
    user: root:root             # necessary, otherwise we get 'access denied'
    entrypoint: /data/entrypoint.sh
    environment:
      TZ: Europe/Amsterdam
    ports:
      - "1880:1880"
    volumes:
      - ./data:/data

/ data / entrypoint. sh file:

#!/bin/sh

DIR=`pwd`

cd /data
npm install

cd "$DIR"
npm start -- --userDir /data

Ради простоты npm install запускается при каждом запуске, так как я понял, что это занимает почти ничего (время), и это очень полезно, если мне нужно изменить пакет. json on- муха. Очень просто заставить его запускаться только один раз, touch -ing-файл и затем проверяя наличие файла.

...