將Node.js程式打包成Docker image

Node.js越來越多人使用,Docker也逐漸成為伺服器管理的潮流
如何將Node.js的程式打包成Docker imager方便管理呢?


要製作一個Docker image首先要先寫一個Dockerfile,然後docker會按照Dockerfile將需要的資源準備好,然後製作成image。
也可以將程式和Dockerfile上傳至Github或Bitbucket讓Docker Hub自動建構image
本文章將說明如何製作一個簡單的Node.js Docker image

Node.js在Docker Hub上有官方image非常方便
首先請確定有寫好package.json,因為docker將會自動呼叫npm安裝所有相依模組,package.json寫法請參考npm官網

首先在程式的目錄下建立Dockerfile檔案,並且填入以下內容

是的,就只有一行
官方的Node.js image非常的方便
會自動按照package.json安裝相依後將程式複製至容器中的 /usr/src/app

接著在程式目錄下運行 docker build .讓docker按照Dockerfile建構
確認建構成功後就可以將image上傳到Docker Hub,方便以後使用

推送image上Docker Hub只需要三步驟

第一步驟要先讓docker登入Docker Hub
輸入指令 docker login 接者輸入使用者名稱和密碼即可登入

第二步驟是將剛才建構的image設定名稱
先輸入 docker images 查看剛剛建構的image的ID
接著輸入 docker tag ID username/ImageName幫image設定名稱
其中ID替換成剛剛建構的image的ID,username替換成Docker Hub的使用者名稱,ImageName方便辨識即可

第三步驟將image上傳到Docker hub
輸入 docker push username/ImageName 即可將image上傳,記得要和上步驟一樣將名稱替換掉
這樣就成功將image上傳上去了,要在其他機器使用只需要將push指令改成pull即可使用

Docker Hub還有一個非常方便的功能,就是自動建構
他可以綁定Github或Bitbucket,當程式碼變更時會自動重新建構,自動標上標籤等

要設定自動建構第一步要將含有Dockerfile的程式碼上傳至Github或Bitbucket,詳細方法請自行搜尋git相關資訊
接著在Docker Hub的帳戶設定中將Github或Bitbucket綁定

綁定完成後從上方選單中選擇新增一個自動建構

從綁定的帳戶中選取要建構的項目後按下Create就完成了
預設會在有任何變更時重新建構,詳細設定可以參考Docker說明文件
在Build Details中可以查看建構狀態及紀錄