簡體   English   中英

在 docker 容器中運行 nodejs 串行端口

[英]Running nodejs serialport in a docker container

我需要在 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?pcid=41 ) 我想為應用程序創建一個單獨的 docker 容器。 請你幫助我好嗎?

這個問題很模糊。 docker hub 有一個官方鏡像,用於構建基於節點的鏡像。 圖像的自述文件中有很多“操作方法”信息。 在我看來,唯一棘手的部分是如何從容器內訪問串行端口。 我相信只有在特權模式下運行容器才能實現,同時確保設備節點也存在於容器內。 當然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在生產中)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM