在Docker容器中运行nodejs serialport

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

这个问题非常模糊。 docker中心有一个用于build立基于节点的图像的官方图像 。 图像的自述文件中有很多“如何”信息。 唯一棘手的部分似乎是如何从容器内访问串行端口。 我相信只有通过在特权模式下运行容器才可能,同时确保设备节点也存在于容器内。 当然,USB2Serial驱动程序需要安装在主机操作系统上。

我build议在交互模式下启动官方的节点映像,并尝试手动安装/运行你的应用程序,然后你可以根据这个脚本找出脚本:

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 install,gyp)之后,编写一个Dockerfile应该是微不足道的。

 FROM node:4.4.0 RUN npm install ...\ && steps\ && to && be && executed && inside && the && image CMD /your/app/start/script.sh 

…并执行--privileged docker build ,然后使用--privileged运行您的映像,在非交互式(无--privileged )的生产环境中运行。