这个问题很模糊。
在 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) 根访问权限,其中包含您可能需要的一切,具有与主机操作系统相同的 /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,然后在生产中以非交互方式(没有-it)使用--privileged 运行您的图像。