在docker容器中运行nodejs serialport

时间:2016-03-15 04:22:18

标签: node.js docker serial-port node-gyp

我需要在docker容器中运行nodejs应用程序。我不是Linux方面的专家,因此我很难理解这样做。整个应用程序存储在github(https://github.com/kashesandr/NRTC)中。该应用程序使用使用node-gyp编译的serialport模块(https://github.com/voodootikigod/node-serialport),在我的例子中,serialport是使用USB2Serial驱动程序的虚拟端口模块 (http://www.prolific.com.tw/US/ShowProduct.aspx?pcid=41) 我想为应用程序创建一个单独的docker容器。你能帮我吗?

1 个答案:

答案 0 :(得分:1)

这个问题很模糊。 在docker hub上有一个official image用于构建基于节点的映像。图像的自述文件中有很多“如何”信息。在我看来,唯一棘手的部分是如何从容器内访问串行端口。我相信只有在特权模式下运行容器才能实现,同时确保设备节点也存在于容器内。当然,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)root访问权限,该访问权限包含您可能需要的所有内容,并具有与主机操作系统相同的/ dev结构(-v /dev:/dev绑定它),所以访问端口应该没有问题。 (出于安全原因,稍后将-v / dev:/ dev卷绑定到更具体的内容)。如果您需要其他未默认安装的其他内容,请通过apt-get(例如apt-get update && apt-get install [package])添加,因为官方节点图像基于Debian Jessie。

在你弄清楚如何运行应用程序(npm install,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运行您的图片。