Запустите скрипт python в node-red, запущенный в докере

#python #docker #node-red

Вопрос:

Я пытаюсь запустить скрипт python, сохраненный в моей локальной системе в node-red, который работает как контейнер docker. Я скопировал скрипт python в контейнер docker, так как узел exec не смог найти файл с помощью этой команды — cat /local/file/path | docker exec -i <running-container-id> sh -c 'cat > /inside/docker/file/path'

Но теперь я получаю следующую ошибку — трассировку (последний последний вызов): Файл «outlier.py», строка 2, в из pandas импорт read_csv ModuleNotFoundError: Нет модуля с именем «панды»

Я установил pandas на своем локальном компьютере, но он не найден узлом exec. Любая помощь будет признательна, спасибо.

Комментарии:

1. Можете ли вы показать свой док-файл?

2. Вы установили все предварительные запросы Python (например, pandas) для вашего скрипта в контейнер? Контейнер Node-RED содержит только необходимые модули Python (например, got node-gyp).

Ответ №1:

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

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

Узел-КРАСНЫЙ предоставляет документ о расширении своего контейнера здесь

Комментарии:

1. Я использую рабочий стол docker, так как я могу установить эти библиотеки в свой контейнер красного цвета с узлом? Там нет файла настройки, и вкладка «Настройки» на рабочем столе docker также не помогает.

2. Другая проблема заключается в том, что я пытаюсь использовать столбец influxdb в качестве входного массива для моего скрипта python. Так будет ли работать подключение узла influxdb к узлу exec и предоставление arr = msg.column, запрошенного в файле python?

3. Как описано в документе, на который я ссылался, вам нужно создать свой собственный файл Dockerfile, а затем использовать его для создания нового контейнера. Ваш второй комментарий-это совершенно отдельный вопрос, который не имеет ничего общего с тем, что вы здесь задали.

4. Спасибо. Хорошо, извините, я опубликую этот вопрос отдельно.