Мне нужно запустить приложение nodejs в контейнере докеров. Я не эксперт в Linux, поэтому мне немного сложно понять, как это сделать. Все приложение хранится на github (https://github.com/kashesandr/NRTC). Приложение использует модуль последовательного порта (https://github.com/voodootikigod/node-serialport). который скомпилирован с помощью node-gyp, и в моем случае последовательный порт является виртуальным, который использует драйвер USB2Serial (http://www.prolific.com.tw/US/ShowProduct.aspx?pcid=41) Я хочу создать отдельный док-контейнер для приложения. Не могли бы вы мне помочь?
Запуск последовательного порта nodejs в контейнере докеров
Ответы (1)
Этот вопрос очень расплывчатый. В Docker Hub есть официальный образ для создания образов на основе узлов. В файле readme изображения есть много информации о том, как это сделать. Единственная сложная часть, как мне кажется, это как получить доступ к последовательному порту изнутри контейнера. Я считаю, что это возможно только при запуске контейнера в привилегированном режиме, гарантируя, что узел устройства также существует внутри контейнера. Конечно, драйвер USB2Serial должен быть установлен в операционной системе хоста.
Я бы предложил запустить официальное изображение узла в интерактивном режиме и попытаться установить/запустить ваше приложение внутри него вручную, тогда вы сможете позже придумать сценарий на основе этого:
docker run -it --privileged -v /dev:/dev -v path-to-your-app:/usr/src/your-app node:4.4.0 /bin/bash
root@3dd71f11f02f:/# node --version
v4.4.0
root@3dd71f11f02f:/# npm --version
2.14.20
root@3dd71f11f02f:/# gcc --version
gcc (Debian 4.9.2-10) 4.9.2
Как вы видите, это даст вам интерактивный (-it
) корневой доступ внутри контейнера, в котором есть все, что вам, вероятно, нужно, с идентичной структурой /dev, что и на хост-ОС (-v /dev:/dev
связывает ее), поэтому не должно быть проблем с доступом к портам. . (уточните привязку тома -v /dev:/dev к чему-то более конкретному позже по соображениям безопасности). Если вам нужно все остальное, что не установлено по умолчанию, добавьте это через apt-get (например, apt-get update && apt-get install [package]
), так как официальный образ узла основан на Debian Jessie.
После того, как вы выяснили, как запустить приложение (установка npm, gyp что угодно), написание Dockerfile должно быть тривиальным.
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
) режиме производства.