Мне нужно запустить приложение nodejs в контейнере докера. Я не специалист в Linux, поэтому мне немного сложно понять, как это сделать. Вся заявка хранится в github (https://github.com/kashesandr/NRTC). В приложении используется модуль serialport (https://github.com/voodootikigod/node-serialport), который скомпилирован с узлом-gyp, и в моем случае serialport является виртуальным, который использует драйвер USB2Serial. () Я хочу создать отдельный контейнер для докеров для приложения. Не могли бы вы мне помочь?Запуск nodejs serialport в контейнере докера
ответ
Этот вопрос очень расплывчатый. В докере-концентраторе есть official image для создания изображений на основе узлов. В файле readme есть много информации о том, «как». Единственная сложная часть, как мне кажется, - это доступ к последовательному порту из контейнера. Я считаю, что это возможно только при запуске контейнера в привилегированном режиме, при этом убедитесь, что узел устройства существует и внутри контейнера. Конечно, драйвер USB2Serial необходимо установить в операционной системе хоста.
Я предложил бы раскрутить официальное изображение узла в интерактивном режиме, и попытаться установить/запустить приложение внутри него вручную, то вы можете выяснить, сценарий, основанный на том, что позже:
docker run -it --privileged -v /dev:/dev -v path-to-your-app:/usr/src/your-app node:4.4.0 /bin/bash
[email protected]:/# node --version
v4.4.0
[email protected]:/# npm --version
2.14.20
[email protected]:/# gcc --version
gcc (Debian 4.9.2-10) 4.9.2
As вы увидите, что это даст вам интерактивный() корневой доступ внутри контейнера, в котором есть все, что вам, вероятно, понадобится, с идентичной структурой/dev, как на хосте os (-v /dev:/dev
связывает его), поэтому проблем с доступом к портам не должно быть. (уточните привязку -v/dev:/dev для более подробного описания позже по соображениям безопасности). Если вам нужно все, что не установлено по умолчанию, добавьте его через apt-get (например, apt-get update && apt-get install [package]
), поскольку официальное изображение узла основано на Debian Jessie.
После того, как вы выяснили, как запустить приложение (npm install, gyp whatever), запись файла Docker должна быть тривиальной.
FROM node:4.4.0
RUN npm install ...\
&& steps\
&& to && be && executed && inside && the && image
CMD /your/app/start/script.sh
... и сделать docker build
, а затем запустить образ с --privileged
, в не интерактивный (без -it
) в производстве.
Это действительно имеет смысл! Спасибо, человек, нужно попробовать. – kashesandr
Это прекрасно работает! Благодарю. – kashesandr
Я рад это слышать! Ура! –