运行 docker 容器中的 nodejs 串口
Running nodejs serialport in a docker container
我需要在 docker 容器中 运行 一个 nodejs 应用程序。我不是 Linux 方面的专家,所以我很难理解如何做到这一点。存储在 github (https://github.com/kashesandr/NRTC). The app uses a serialport module (https://github.com/voodootikigod/node-serialport) 中的整个应用程序是用 node-gyp 编译的,在我的例子中,串口是一个使用 USB2Serial 驱动程序的虚拟串口
(http://www.prolific.com.tw/US/ShowProduct.aspx?pcid=41)
我想为应用程序创建一个单独的 docker 容器。你能帮帮我吗?
这个问题很含糊。
docker 中心有一个 official image 用于构建基于节点的图像。图片的自述文件中有大量 "how to" 信息。在我看来,唯一棘手的部分是如何从容器内访问串口。我相信它只是 possible 通过 运行 在特权模式下连接容器,同时确保设备节点也存在于容器内。当然host操作系统需要安装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 访问权限,其中包含您可能需要的一切,具有与 host 相同的 /dev 结构os(-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
...并在生产中以非交互方式(无 -it
)docker build
,然后 运行 您的图像 --privileged
。
我需要在 docker 容器中 运行 一个 nodejs 应用程序。我不是 Linux 方面的专家,所以我很难理解如何做到这一点。存储在 github (https://github.com/kashesandr/NRTC). The app uses a serialport module (https://github.com/voodootikigod/node-serialport) 中的整个应用程序是用 node-gyp 编译的,在我的例子中,串口是一个使用 USB2Serial 驱动程序的虚拟串口 (http://www.prolific.com.tw/US/ShowProduct.aspx?pcid=41) 我想为应用程序创建一个单独的 docker 容器。你能帮帮我吗?
这个问题很含糊。 docker 中心有一个 official image 用于构建基于节点的图像。图片的自述文件中有大量 "how to" 信息。在我看来,唯一棘手的部分是如何从容器内访问串口。我相信它只是 possible 通过 运行 在特权模式下连接容器,同时确保设备节点也存在于容器内。当然host操作系统需要安装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 访问权限,其中包含您可能需要的一切,具有与 host 相同的 /dev 结构os(-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
...并在生产中以非交互方式(无 -it
)docker build
,然后 运行 您的图像 --privileged
。