在Docker容器中运行nodejs serialport

问题描述:

我需要在docker容器中运行nodejs应用程序。我不是Linux的专家,所以我很难理解ho这样做。整个应用程序存储在github(https://github.com/kashesandr/NRTC)。该应用程序使用与node-gyp编译的串口模块(https://github.com/voodootikigod/node-serialport),在我的情况下,串口是使用USB2Serial驱动程序的虚拟驱动程序。 (http://www.prolific.com.tw/US/ShowProduct.aspx?pcid=41) 我想为应用程序创建单独的泊坞窗容器。你可以帮我吗?在Docker容器中运行nodejs serialport

这个问题非常含糊。 在码头中心有一个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 

[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 

由于你会发现这会给你一个交互式(-it)容器内的根访问权限,它拥有你可能需要的所有东西,具有与主机操作系统上相同的/ dev结构(-v /dev:/dev绑定它),因此访问端口应该没有问题。 (出于安全原因,稍后将-v/dev:/ dev卷绑定到稍后更具体的内容)。如果你需要默认没有安装的其他东西,请通过apt-get(例如apt-get update && apt-get install [package])添加它,因为官方节点映像基于Debian Jessie。

当你想出如何运行应用程序(npm install,gyp whatever)后,编写一个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)。

+0

这确实很有意义!谢谢你,需要尝试一下。 – kashesandr

+0

这工作正常!谢谢。 – kashesandr

+0

我很高兴听到!干杯! –