docker和nodejs

去年買了一本docker書,本來想玩玩,可是了各種事情,一直閒着,最近在玩nodejs,突然想起可以把他們兩個合一起玩。
我做過一段時間的APP後臺開發,主要是RESTful API開發,主要使用C++和PHP開發,這期間還開源了一個FastCGI開發的框架ccfast。那麼玩nodejs也是弄弄restful api開發。js的語法比較簡單,20分鐘差不多,然後看的nodejs入門那邊書,其中講了nodejs開發的基礎,以及怎麼寫一個可擴展的程序框架,我在它之上修改了一點點,然後寫了個python腳本,自動生成一個基礎文件。

zhou@zhou-K42JE:~/work/nodejs/nodejs_project_template/test$ ls
app.js         config_router.js    router.js
config_app.js  request_handler.js  server.j

app是程序入口文件,server封裝了httpServer,router封裝了路由函數,request_handler爲具體的處理函數,還有就是路由和app的配置參數。
添加一個handler處理很簡單,只要在request_handler添加一個function,和在路由配置中將pathname和handler配置就行了.

function test(request, response) {
    response.writeHead(200, {'Content-type' : 'text/html'});
    response.write("test");
    response.end();
}

exports.test = test;
router_mapping['/text'] = request_handler.test;

這樣我們使用 nodejs app.js運行程序,然後curl http://localhost:8888/test運行了。

寫一個簡單的Dockerfile來build我們的一個鏡像。

FROM daocloud.io/ubuntu:14.04
MAINTAINER zhx910322@163.com

RUN mkdir -p /app
WORKDIR /app


COPY test/* /app/


RUN apt-get update 
RUN apt-get install -y nodejs 

EXPOSE 8888
ENTRYPOINT ["nodejs", "app.js"]

我們使用了國內的容器服務提供商daocloud的提供的服務比較快。

 docker build --no-cache=true -t docker_dev/nodejs_t_demo:0.1 .

使用上面命令build鏡像

docker run -d -P docker_dev/nodejs_t_demo:0.1 

基於上面build的鏡像啓一個容器。
docker ps

CONTAINER ID        IMAGE                          COMMAND             CREATED             STATUS              PORTS                    NAMES
c662bfb455ce        docker_dev/nodejs_t_demo:0.1   "nodejs app.js"     About an hour ago   Up About an hour    0.0.0.0:1025->8888/tcp   agitated_babbage   

我們的程序在後臺運行,容器中的8888端口映射在本地的1025端口,可以我curl http://localhost:1025沒有輸出,不知道什麼原因,還需努力學習啊。

相關代碼:https://git.oschina.net/zhouX/nodejs_project_template.git

發佈了213 篇原創文章 · 獲贊 23 · 訪問量 76萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章