1.新建目录src,并进入src目录

[xiejdm@localhost Documents]$ mkdir src
[xiejdm@localhost Documents]$ cd src/

2.创建package.json和index.js文件,文件内容如下:

package.json

[xiejdm@localhost Documents]$ mkdir src
[xiejdm@localhost Documents]$ cd src/
[xiejdm@localhost src]$ cat package.json
{
"name": "docker-centos-hello",
"private": true,
"version": "0.0.1",
"description": "Node.js Hello world app on CentOS using docker",
"author": "Gideon xie <xiejdml@gmail.com>",
"dependencies": {
"express": "3.2.4"
}
}

index.js

[xiejdm@localhost src]$ cat index.js
var express = require('express'); // Constants
var PORT = 8080; // App
var app = express();
app.get('/', function (req, res) {
res.send('Hello world\n');
}); app.listen(PORT);

3.创建Dockfile

[xiejdm@localhost src]$ cat Dockerfile
FROM centos:centos7 # Enable EPEL for Node.js
RUN yum install -y epel-release
# Install Node.js and npm
RUN yum install -y npm # Bundle app source
COPY . /src
# Install app dependencies
RUN cd /src; npm install EXPOSE
CMD ["node", "/src/index.js"
]
[xiejdm@localhost src]$

4.使用docker build构建生成镜像

[xiejdm@localhost src]$ docker build -t gideon/centos-node-hello .
Sending build context to Docker daemon 4.096 kB
Sending build context to Docker daemon
Step : FROM centos:centos7
---> 7322fbe74aa5
Step : RUN yum install -y epel-release
---> Running in 858c0e3e9a22
Loaded plugins: fastestmirror
Determining fastest mirrors
* base: mirrors.yun-idc.com
* extras: mirrors.yun-idc.com
* updates: mirrors.nwsuaf.edu.cn
Resolving Dependencies
--> Running transaction check
---> Package epel-release.noarch :- will be installed
--> Finished Dependency Resolution Dependencies Resolved ================================================================================
Package Arch Version Repository Size
================================================================================
Installing:
epel-release noarch - extras k Transaction Summary
================================================================================
Install Package Total download size: k
······
······
······
npm http https://registry.npmjs.org/qs/-/qs-0.6.4.tgz
npm WARN engine formidable@1.0.: wanted: {"node":"<0.9.0"} (current: {"node":"v0.10.36","npm":"1.3.6"})
express@3.2. node_modules/express
├── methods@0.0.
├── fresh@0.1.
├── range-parser@0.0.
├── cookie-signature@1.0.
├── buffer-crc32@0.2.
├── cookie@0.0.
├── commander@0.6.
├── mkdirp@0.3.
├── send@0.1. (mime@1.2.)
├── debug@2.2. (ms@0.7.)
└── connect@2.7. (pause@0.0., qs@0.6., bytes@0.2., formidable@1.0.)
---> 66738118fe5d
Removing intermediate container cad428ec3167
Step : EXPOSE
---> Running in 9ee7937e5835
---> f6ccd16494ac
Removing intermediate container 9ee7937e5835
Step : CMD node /src/index.js
---> Running in 9ca19e7392e9
---> ae5f980eea52
Removing intermediate container 9ca19e7392e9
Successfully built ae5f980eea52
[xiejdm@localhost src]$

5.查看我的镜像

[xiejdm@localhost src]$ docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
gideon/centos-node-hello latest ae5f980eea52 About a minute ago MB
nodejs_hello/node latest 2daac5743daa minutes ago 544.7 MB
gideon/nodejs latest f30730d7c260 days ago 544.7 MB
nginx latest 6886fb5a9b8d days ago 132.8 MB
ubuntu latest d2a0ecffe6fa weeks ago 188.3 MB
centos centos7 7322fbe74aa5 weeks ago 172.2 MB
centos latest 7322fbe74aa5 weeks ago 172.2 MB
hello-world latest 91c95931e552 months ago B
[xiejdm@localhost src]$

6.运行刚刚生成的镜像,并将容器的8080端口映射到主机的49161端口

[xiejdm@localhost src]$ docker run -p : -d gideon/centos-node-hello
71baf591eb27a2373daf5a802ee9406e635878ee1b1fcd047eb3f39e476b4406
[xiejdm@localhost src]$

7.在本机输入localhost:49161,访问helloword应用。

备注: CentOS 7中增加EPEL库,直接使用yum install epel-release即可(CentOS 5/6则需要下载对应的rpm包然后进行安装)。

参考:http://docs.docker.com/examples/nodejs_web_app/

    http://www.rackspace.com/knowledge_center/article/install-epel-and-additional-repositories-on-centos-and-red-hat

Docker 生成Node.js web app(含端口映射)的更多相关文章

  1. [Docker] Build a Simple Node.js Web Server with Docker

    Learn how to build a simple Node.js web server with Docker. In this lesson, we'll create a Dockerfil ...

  2. node.js Web应用框架Express.js(一)

    什么是Express.js Express 是一个简洁而灵活的 node.js Web应用框架, 提供一系列强大特性帮助你创建各种Web应用,提供丰富的HTTP工具以及来自Connect框架的中间件随 ...

  3. KoaHub.js是基于 Koa.js 平台的 Node.js web 快速开发框架

    koahubjs KoaHub.js -- 基于 Koa.js 平台的 Node.js web 快速开发框架.可以直接在项目里使用 ES6/7(Generator Function, Class, A ...

  4. iKcamp|基于Koa2搭建Node.js实战(含视频)☞ 错误处理

    沪江CCtalk视频地址:https://www.cctalk.com/v/15114923887518 处理错误请求 爱能遮掩一切过错. 当我们在访问一个站点的时候,如果访问的地址不存在(404), ...

  5. iKcamp|基于Koa2搭建Node.js实战(含视频)☞ 记录日志

    沪江CCtalk视频地址:https://www.cctalk.com/v/15114923883523 log 日志中间件 最困难的事情就是认识自己. 在一个真实的项目中,开发只是整个投入的一小部分 ...

  6. iKcamp|基于Koa2搭建Node.js实战(含视频)☞ 处理静态资源

    视频地址:https://www.cctalk.com/v/15114923882788 处理静态资源 无非花开花落,静静. 指定静态资源目录 这里我们使用第三方中间件: koa-static 安装并 ...

  7. iKcamp|基于Koa2搭建Node.js实战(含视频)☞ 视图Nunjucks

    视频地址:https://www.cctalk.com/v/15114923888328 视图 Nunjucks 彩虹是上帝和人类立的约,上帝不会再用洪水灭人. 客户端和服务端之间相互通信,传递的数据 ...

  8. node.js Web应用框架Express入门指南

    node.js Web应用框架Express入门指南 作者: 字体:[增加 减小] 类型:转载 时间:2014-05-28 我要评论 这篇文章主要介绍了node.js Web应用框架Express入门 ...

  9. 利用OpenShift托管Node.js Web服务进行微信公众号开发

    最近写了一个微信的翻译机器人.用户只要关注该公众号,发送英文的消息,就能收到中文翻译的回复.有兴趣的读者可以扫描下面的二维码关注该公众号,尝试发送英文单词试试看.(有时候第一次发送单词会收到“该公众号 ...

随机推荐

  1. const用法总结

    1. const修饰变量 ; const int* a = &b; //情况1 int const* a = &b; //情况2 int* const a = &b; //情况 ...

  2. Oracle 回忆录

    简述 工作时间说短也不算短了,掐指一算差不多三年了吧.以前都没有写过Blog,仅偶尔对所学和所用到的做些许整理,后面竟然没有把那留下来,悲催啊!留不下来的整理不是好东西(*^__^*) 嘻嘻……,现在 ...

  3. YUI Array 之 indexOf(索引值|搜索)

    YUI原码 YUI indexOfYArray.indexOf = Lang._isNative(Native.indexOf) ? function (array, value, from) { r ...

  4. android 开发环境搭建 (转)

    最近由于工作中要负责开发一款Android的App,之前都是做JavaWeb的开发,Android开发虽然有所了解,但是一直没有搭建开发环 境去学习,Android的更新速度比较快了,Android1 ...

  5. DOM2定位与高宽类属性专题学习【DOM专题学习系列(一)】

    网页可见区域宽: document.body.clientWidth;网页可见区域高: document.body.clientHeight;网页可见区域宽: document.body.offset ...

  6. centos源码安装git

    因为Centos上yum安装的话可能版本比较低,使用中会有一些难以预料的问题出现. 从源代码编译安装方法: #Centos执行: yum install curl-devel expat-devel ...

  7. SSH 概念及使用详解

    注意:转载请注明出处:http://www.programfish.com/blog/?p=124 SSH 基本概念 SSH 英文全称是secure shell,字面意思:安全的shell. SSH协 ...

  8. 关于url拼接传参数和利用view的字典传参数时,模板获取数据的方式问题

    url = "{% url 'dashboard:internship-theme-stat' %}?teacher_name="+teacher_name+"& ...

  9. USB信号是什么类型的? 为什么在D+,D-处要接上拉下拉电阻呢,具体阻值要如何计算

    USB协议要求的,1.5K上拉在D+时表示是全速设备,在D-表示不是全速设备有些方案里面(比如PNX5230)推荐D+/D-接下拉1M的电阻是为了提高数据传输稳定性的 ①  usb有主从设备之分,主设 ...

  10. C# Struct结构体

    C#中结构类型和类类型在语法上非常相似,他们都是一种数据结构,都可以包括数据成员和方法成员. 结构和类的区别: 1.结构是值类型,它在栈中分配空间:而类是引用类型,它在堆中分配空间,栈中保存的只是引用 ...