2016-03-15 2 views
1

Мне нужно запустить приложение nodejs в контейнере докера. Я не специалист в Linux, поэтому мне немного сложно понять, как это сделать. Вся заявка хранится в github (https://github.com/kashesandr/NRTC). В приложении используется модуль serialport (https://github.com/voodootikigod/node-serialport), который скомпилирован с узлом-gyp, и в моем случае serialport является виртуальным, который использует драйвер USB2Serial. () Я хочу создать отдельный контейнер для докеров для приложения. Не могли бы вы мне помочь?Запуск nodejs serialport в контейнере докера

ответ

1

Этот вопрос очень расплывчатый. В докере-концентраторе есть 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) в производстве.

+0

Это действительно имеет смысл! Спасибо, человек, нужно попробовать. – kashesandr

+0

Это прекрасно работает! Благодарю. – kashesandr

+0

Я рад это слышать! Ура! –

 Смежные вопросы

  • Нет связанных вопросов^_^