星期二, 8月 01, 2017

Simplest Node.js Web Server (in Docker or not)

這篇實在是一年多前就不該偷懶好好寫的(與這篇有關),在參考了這篇這篇之後,覺得以下的內容還算能用:

var http = require('http');
var port = 8080;
http.createServer(function (req, res) {
    res.writeHead(200, {'Content-Type': 'text/html'});
    res.end('<html><head></head><body><h1>Hello World!</h1></body></html>');
}).listen(port);
console.log('Server running at http://localhost:' + port);

要能執行的前提僅需安裝 Node.js,因為 http 是內建的,也不需要再補 npm install http。假設存檔名為 helloServer.js,執行時只要切到該目錄,在命令列下 node helloServer.js,之後就可用瀏覽器訪問 http://localhost:8080 看到這個超陽春網頁。

想更乾淨一點,不要直接在本機安裝 Node.js?用 Docker 再適合不過了,而且官方支援就提到如何直接執行單一程式,我稍做修改的命令與簡略說明:
  • docker run -it --rm --name myNode -v "$PWD":/usr/src/app -w /usr/src/app node:latest node helloServer.js
  • 命名為 myNode,可以修改。
  • /usr/src/app 是 container 裡面的目錄,對應外面的現行目錄,也是裡面的工作目錄。
  • image 名稱 node:latest,因為這個簡單範例不挑版本。
  • 最後的 node helloServer.js 就是下到 container 裡面去執行的命令。
但這次瀏覽器看不到網頁了?別急,先另開一個 Terminal 下指令查 container 用哪個 IP:
  • docker inspect myNode | grep IPAddress
瀏覽器在 docker 外面,所以 localhost 要換成這樣查來的 IP 才會通。


沒有留言:

張貼留言