Node.js Runtime
目的
希望提供一個Node.js的環境讓我們可以測試在host上的一個Node.js Web程式... 這邊有幾個Node.js的基礎知識:
- Node.js程式預設以npm start來呼叫app.js啟動
- npm start可以定義啟動時呼叫非app.js的主程式來啟動
- Node.js需要透過npm install來安裝相依套件
最後,希望可以直接透過下面指令直接執行"external-path"下的Node.js程式
docker run -d \
-p [external-port]:[internal-port] \
-v [external-path]:[internal-path] \
[my-image]
專案準備
使用express指令產生template project,並且進入安裝相依套件...
$ express -e ~/project/web
$ cd ~/project/web && npm install
測試剛剛建立的專也可以使用npm start來測看看...
$ cd ~/project/web
$ npm start
以上操作,假設我們已經準備好docker hub與設定好帳號了...
準備Dockerfile
這邊我們使用google所建置的opensource dockerfile(google/nodejs)來作為base image,該image已經具備node.js的基本compile與安裝,讓建置的動作簡單化... 接下來,我們指定instance中的/data為工作路徑,並且預計expose 3000 port來提供外部連線。最後,使用npm start來啟動/data下的Node.js程式...
FROM google/nodejs
WORKDIR /data
EXPOSE 3000
CMD []
ENTRYPOINT ["/nodejs/bin/npm", "start"]
假設上面的Dockerfile我們儲存在"~/project/dockerws/nodejs-runtime/"下面。
Build & Push
build的過程,我們可以指定預計要存放docker hub的專案位置(tag),在這邊我們使用peihsinsu/nodejs-runtime... 透過-t我們可以將build完後的image commit到local registry...
$ cd ~/project/dockerws/nodejs-runtime/
$ docker build -t="peihsinsu/nodejs-runtime" .
build完成後,我們可以透過docker push將該tag的內容push到docker hub上...
$ docker push peihsinsu/nodejs-runtime
測試
下面是將建置好的docker image執行起來,
docker run -d -p 3000:3000 -v ~/project/dockerws/web:/data peihsinsu/nodejs-runtime
接著我們可以透過瀏覽起瀏覽首頁來確認建置是否完成...