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

接著我們可以透過瀏覽起瀏覽首頁來確認建置是否完成...

results matching ""

    No results matching ""