docker和nodejs

来源:互联网 发布:mac os 系统占用空间 编辑:程序博客网 时间:2024/05/01 09:44

去年买了一本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$ lsapp.js         config_router.js    router.jsconfig_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.04MAINTAINER zhx910322@163.comRUN mkdir -p /appWORKDIR /appCOPY test/* /app/RUN apt-get update RUN apt-get install -y nodejs EXPOSE 8888ENTRYPOINT ["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                    NAMESc662bfb455ce        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

0 0
原创粉丝点击