2016-03-15 217 views
1

我需要在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

回答

1

這個問題非常含糊。 在碼頭中心有一個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

我很高興聽到!乾杯! –