Miles' Blog

天涯何處無幹話,何必要講實務話

Started

以下用 Docker 來快速建置環境與練習

可以參考 Docker Hub 選擇 Docker image 版本,這裡使用 node:4.4 做練習

HelloWorld

首先先建立 app.js 開始寫 HelloWorld 程式

console.log("HelloWorld");

使用 Docker 去 run 這隻程式:

docker pull node:4.4
docker run --rm -v `pwd`:/usr/src/app -w /usr/src/app node:4.4 node app.js

輸出範例如下

$ docker run --rm -v `pwd`:/usr/src/app -w /usr/src/app node:4.4 node app.js
HelloWorld

HTTP Server

Node.js 有內建基本的 HTTP Server 可以直接使用,程式碼如下:

var server;
var ip = "0.0.0.0";
var port = 3000;
var http = require('http');

server = http.createServer(function (req, res) {
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end('Hello World\n');
});

server.listen(port, ip);

console.log("Server running at http://" + ip + ":" + port);

不過 Docker 只要 run 下去就無法中斷了,目前問題原因還不清楚

可以換進到 Docker bash run :

docker run --rm -v `pwd`:/usr/src/app -w /usr/src/app -p 3000:3000 node:4.4 bash

# In docker container
node app.js

執行後會出現監聽訊息

$ node app.js
Server running at http://0.0.0.0:3000

這時開頁面就可以看到 HelloWorld 了

npm

NPM 全名為 Node Package Manager,為套件管理工具,類似 PHPComposerRubyGem

使用 Docker 初始化 NPM 套件定義檔

docker run --rm -it -v `pwd`:/usr/src/app -w /usr/src/app node:4.4 npm init -y

執行完後,會多一個檔叫 package.json。假如要裝 Express 可以下指令安裝

docker run --rm -it -v `pwd`:/usr/src/app -w /usr/src/app node:4.4 npm install express --save

npm Command

上述 Docker 每次執行完之後都會移除 container,所以如果有裝全域套件的需求時,建議可以使用 Dockerfile 安裝

比方說我想要用 express 的指令,首先建立一個名為 Dockerfile 的檔案:

FROM node:4.4
RUN npm install -g express-generator

然後下指令建 image

docker build -t=mynode .

建完後就可以用 mynode 來 run express 了

docker run --rm -it -v `pwd`:/usr/src/app -w /usr/src/app mynode express

References

0%