Docker 生成Node.js web app(含端口映射)

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

[[email protected] Documents]$ mkdir src
[[email protected] Documents]$ cd src/

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

package.json

[[email protected] Documents]$ mkdir src
[[email protected] Documents]$ cd src/
[[email protected] 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 <[email protected]>",
  "dependencies": {
    "express": "3.2.4"
  }
}

index.js

[[email protected] 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

[[email protected] 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  8080
CMD ["node", "/src/index.js"]
[[email protected] src]$ 

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

[[email protected] src]$ docker build -t gideon/centos-node-hello .
Sending build context to Docker daemon 4.096 kB
Sending build context to Docker daemon
Step 0 : FROM centos:centos7
 ---> 7322fbe74aa5
Step 1 : 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 0:7-5 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

================================================================================
 Package                Arch             Version         Repository        Size
================================================================================
Installing:
 epel-release           noarch           7-5             extras            14 k

Transaction Summary
================================================================================
Install  1 Package

Total download size: 14 k
······
······
······
npm http 200 https://registry.npmjs.org/qs/-/qs-0.6.4.tgz
npm WARN engine [email protected]1.0.13: wanted: {"node":"<0.9.0"} (current: {"node":"v0.10.36","npm":"1.3.6"})
[email protected]3.2.4 node_modules/express
├── [email protected]0.0.1
├── [email protected]0.1.0
├── range[email protected]0.0.4
├── cookie[email protected]1.0.1
├── buffer[email protected]0.2.1
├── [email protected]0.0.5
├── [email protected]0.6.1
├── [email protected]0.3.4
├── [email protected]0.1.0 ([email protected]1.2.6)
├── [email protected]2.2.0 ([email protected]0.7.1)
└── [email protected]2.7.9 ([email protected]0.0.1, [email protected]0.6.4, [email protected]0.2.0, [email protected]1.0.13)
 ---> 66738118fe5d
Removing intermediate container cad428ec3167
Step 5 : EXPOSE 8080
 ---> Running in 9ee7937e5835
 ---> f6ccd16494ac
Removing intermediate container 9ee7937e5835
Step 6 : CMD node /src/index.js
 ---> Running in 9ca19e7392e9
 ---> ae5f980eea52
Removing intermediate container 9ca19e7392e9
Successfully built ae5f980eea52
[[email protected] src]$ 

5.查看我的镜像

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

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

[[email protected] src]$ docker run -p 49161:8080 -d gideon/centos-node-hello
71baf591eb27a2373daf5a802ee9406e635878ee1b1fcd047eb3f39e476b4406
[[email protected] 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

时间: 2024-08-10 00:06:26

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

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

视频地址:https://www.cctalk.com/v/15114923888328 视图 Nunjucks 彩虹是上帝和人类立的约,上帝不会再用洪水灭人. 客户端和服务端之间相互通信,传递的数据最终都会展示在视图中,这时候就需要用到『模板引擎』. 什么是模板引擎? 模板引擎是为了使用户界面与业务数据分离而产生的,可以生成特定格式的文档.例如,用于网站的模板引擎会生成一个标准的 HTML 文档. 市面上常见的模板引擎很多,例如:Smarty.Jade.Ejs.Nunjucks 等,可以根据个

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

沪江CCtalk视频地址:https://www.cctalk.com/v/15114923883523 log 日志中间件 最困难的事情就是认识自己. 在一个真实的项目中,开发只是整个投入的一小部分,版本迭代和后期维护占了极其重要的部分.项目上线运转起来之后,我们如何知道项目运转的状态呢?如何发现线上存在的问题,如何及时进行补救呢?记录日志就是解决困扰的关键方案.正如我们每天写日记一样,不仅能够记录项目每天都做了什么,便于日后回顾,也可以将做错的事情记录下来,进行自我反省.完善的日志记录不仅能

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

沪江CCtalk视频地址:https://www.cctalk.com/v/15114923887518 处理错误请求 爱能遮掩一切过错. 当我们在访问一个站点的时候,如果访问的地址不存在(404),或服务器内部发生了错误(500),站点会展示出某个特定的页面,比如: 那么如何在 Koa 中实现这种功能呢?其实,一个简单的中间件即可实现,我们把它称为 http-error.实现过程并不复杂,拆分为三步来看: 第一步:确认需求 第二步:整理思路 第三步:代码实现 确认需求 打造一个事物前,需要先确

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

最近写了一个微信的翻译机器人.用户只要关注该微信号,发送英文的消息,就能收到中文翻译的回复.后台是用Node.js写的,托管在OpenShift的Paas平台上.翻译过程实际上是调用微软的Bing translation API做的,代码中用到了alexu84的bing-translate和JacksonTian的wechat这两个npm模块.下面把做的过程详细说一下. 1. 微信公众号开发 首先是要到https://mp.weixin.qq.com 申请一个公众号,并申请成为开发者.目前个人只

node.js web实时消息服务器后台推送技术方案---GoEasy

Goeasy, 它是一款第三方推送服务平台,使用它的API可以轻松搞定实时推送!个人感觉goeasy推送更稳定,推送速度快,代码简单易懂上手快浏览器兼容性:GoEasy推送支持websocket 和polling两种连接方式,从而可以支持IE6及其以上的所有版本,同时还支持其它浏览器诸如Firefox, Chrome, Safari 等等.支 持不同的开发语言:   GoEasy推送提供了Restful API接口,无论你的后台程序用的是哪种语言都可以通过RestfulAPI来实现后台实时推送.

node.js Web实时消息后台服务器推送技术---GoEasy

越来越多的项目需要用到实时消息的推送与接收,怎样用node.js实现最方便呢?我这里推荐大家使用GoEasy, 它是一款第三方推送服务平台,使用它的API可以轻松搞定实时推送! 浏览器兼容性:GoEasy推送 支持websocket 和polling两种连接方式,从而可以支持IE6及其以上的所有版本,同时还支持其它浏览器诸如Firefox, Chrome, Safari 等等. 支持不同的开发语言:    GoEasy推送 提供了Restful API接口,无论你的后台程序用的是哪种语言都可以通

node.js web开发:EXPRESS 4.x 以上使用session和cookie 的记录

关于session 和cookie 我搞了2-3天, 发现这个玩意也挺麻烦的. 很多教程都是把这种会话保存在nosql里面,比如mongo,或者redis等等.但是我还是想直接保存在计算机的内存中,比较符合传统的方式.网上也有很多这方面的文章,但基本上都是你抄我的,我抄你的,而且express有很多这种session/cookie的中间件,总是让人弄迷糊.很多文章都是点到为止,完全要靠自己慢慢去试,去看文档,去摸索. 我是基于connect这个中间件实现的.这个middleware 功能非常强大

iKcamp|基于Koa2搭建Node.js实战(含视频)? 代码分层

视频地址:https://www.cctalk.com/v/15114923889408 文章 在前面几节中,我们已经实现了项目中的几个常见操作:启动服务器.路由中间件.Get 和 Post 形式的请求处理等.现在你已经迈出了走向成功的第一步. 目前,整个示例中所有的代码都写在 app.js 中.然而在业务代码持续增大,场景更加复杂的情况下,这种做法无论是对后期维护还是对患有强迫症的同学来说都不是好事.所以我们现在要做的就是:『分梨』. 分离 router 路由部分的代码可以分离成一个独立的文件

Node.js Web开发(二)

上一篇文章主要介绍了koa2的基本操作(坐下坐下),但是每次都返回一样的HTML似乎也不可能,所以现在我们需要来处理URL了. 直接来点高级点的东西,我们需要一个能处理URL的middleware,它叫做:koa-router: npm install koa-router 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 const Koa = require('koa'); const router = require('koa-route