docker和nodejs

7 篇文章 0 订阅
1 篇文章 0 订阅

去年买了一本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

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值