在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 教程/ Linux/ Docker中運(yùn)行Node.js web應(yīng)用
docker用戶指南
鏡像
在Docker中運(yùn)行SSH進(jìn)程服務(wù)
Docker Hub
CentOS
Rackspace Cloud
Red Hat Enterprise Linux
在Docker中運(yùn)行Reids服務(wù)
FrugalWare
管理容器數(shù)據(jù)
Debian
Docker中運(yùn)行MongoDB
Gentoo
在Docker中使用Riak服務(wù)
IBM SoftLayer
在Docker中運(yùn)行Apt-Cacher-ng服務(wù)
開(kāi)始使用Docker Hub
Amazon EC2
在Docker中運(yùn)行"hello Word"應(yīng)用
Docker Hub上的倉(cāng)庫(kù)和鏡像
Ubuntu
Docker Hub賬戶
Docker中運(yùn)行Node.js web應(yīng)用
Docker中運(yùn)行CouchDB服務(wù)
Fedora
Binaries
CRUX Linux
使用Docker Hub
Mac OS X 安裝 Docker
在Docker中運(yùn)行PostgreSQL
創(chuàng)建一個(gè)基本鏡像
Docker Hub上的自動(dòng)化構(gòu)建
連接容器
Google Cloud Platform
使用docker第一步
使用docker鏡像
Arch Linux
openSUSE
使用容器
Microsoft Windows 安裝docker

Docker中運(yùn)行Node.js web應(yīng)用

注意:——如果你不喜歡sudo,可以查看非root用戶使用

這個(gè)例子的目的是向您展示如何通過(guò)使用Dockerfile來(lái)構(gòu)建自己的docker鏡像。我們通過(guò)在Centos上運(yùn)行一個(gè)簡(jiǎn)單node.jsweb應(yīng)用輸出'hello word'。您可以在https://github.com/enokd/docker-node-hello/獲得完整的源代碼。

創(chuàng)建Node.js應(yīng)用

首先,先創(chuàng)建一個(gè)文件存放目錄src。然后創(chuàng)建package.json來(lái)描述你的應(yīng)用程序和依賴關(guān)系:

    {
      "name": "docker-centos-hello",
      "private": true,
      "version": "0.0.1",
      "description": "Node.js Hello world app on CentOS using docker",
      "author": "Daniel Gasienica <daniel@gasienica.ch>",
      "dependencies": {
        "express": "3.2.4"
      }
    }

然后,創(chuàng)建一個(gè)index.js文件使用Express.js框架來(lái)做一個(gè)web用用程序:

    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);
    console.log('Running on http://localhost:' + PORT);

在接下來(lái)的步驟中,我們將看到如何使用docker的centos容器來(lái)運(yùn)行這個(gè)應(yīng)用程序。首先,你需要為你的應(yīng)用程序創(chuàng)建一個(gè)docker鏡像。

創(chuàng)建Dockerfile

創(chuàng)建一個(gè)空文件叫Dockerfile:

    touch Dockerfile

使用你喜歡的編輯器打開(kāi)Dockerfile,并添加如下,定義了docker鏡像需要構(gòu)建的版本(這個(gè)示例使用docker 0.3.4)

    # DOCKER-VERSION 0.3.4

接下來(lái),定義構(gòu)建自己鏡像的頂級(jí)鏡像。在這里我們使用Centos(tag:6.4):

    FROM    centos:6.4

因?yàn)槲覀円獦?gòu)建一個(gè)Node.js應(yīng)用,你需要在你的Centos鏡像中安裝Node.js。Node.js運(yùn)行應(yīng)用程序需要使用npm安裝你package.json中定義的依賴關(guān)系。安裝Centos包,你可以查看Node.js維基指令:

    # Enable EPEL for Node.js
    RUN     rpm -Uvh http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm
    # Install Node.js and npm
    RUN     yum install -y npm

將你的應(yīng)用程序源代碼添加到你的Docker鏡像中,使用ADD指令:

    # Bundle app source
    ADD . /src

使用npm安裝你的應(yīng)用程序依賴:

    # Install app dependencies
    RUN cd /src; npm install

應(yīng)用程序綁定到端口8080,您將使用EXPOSE指令做docker進(jìn)程映射:

    EXPOSE  8080

最后,定義命令,使用CMD定義運(yùn)行時(shí)的node服務(wù)和應(yīng)用src/index.js的路徑(看我們添加源代碼到容器的步驟):

    CMD ["node", "/src/index.js"]

你的Dockerfile現(xiàn)在看起來(lái)像如下這樣:

    # DOCKER-VERSION 0.3.4
    FROM    centos:6.4

    # Enable EPEL for Node.js
    RUN     rpm -Uvh http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm
    # Install Node.js and npm
    RUN     yum install -y npm

    # Bundle app source
    ADD . /src
    # Install app dependencies
    RUN cd /src; npm install

    EXPOSE  8080
    CMD ["node", "/src/index.js"]

創(chuàng)建你的鏡像

去到你的Dockerfile目錄下,運(yùn)行命令來(lái)構(gòu)建鏡像。-t參數(shù)給鏡像添加標(biāo)簽,為了讓我們?cè)?code>docker images命令更容易查找到它:

    $ sudo docker build -t <your username>/centos-node-hello .

你的鏡像現(xiàn)在將在列表中:

$ sudo docker images

    # Example
    REPOSITORY                            TAG       ID              CREATED
    centos                                6.4       539c0211cd76    8 weeks ago
    <your username>/centos-node-hello     latest    d64d3505b0d2    2 hours ago

運(yùn)行鏡像

使用-d參數(shù)來(lái)運(yùn)行你的鏡像使容器在后臺(tái)運(yùn)行。使用-p參數(shù)來(lái)綁定一個(gè)公共端口到私有容器端口上。運(yùn)行你之前構(gòu)建的鏡像:

    $ sudo docker run -p 49160:8080 -d <your username>/centos-node-hello

打印應(yīng)用輸出:

    # Get container ID
    $ sudo docker ps

    # Print app output
    $ sudo docker logs <container id>

    # Example
    Running on http://localhost:8080

測(cè)試

要測(cè)試應(yīng)用程序,先得到docker應(yīng)用程序映射的端口:

    $ sudo docker ps

    # Example
    ID            IMAGE                                     COMMAND              ...   PORTS
    ecce33b30ebf  <your username>/centos-node-hello:latest  node /src/index.js         49160->8080

在上面的示例中,docker映射容器的49160端口到8080端口。 現(xiàn)在你可以使用curl來(lái)訪問(wèn)你的app(安裝curl:sudo apt-get install curl):

    $ curl -i localhost:49160

    HTTP/1.1 200 OK
    X-Powered-By: Express
    Content-Type: text/html; charset=utf-8
    Content-Length: 12
    Date: Sun, 02 Jun 2013 03:53:22 GMT
    Connection: keep-alive

    Hello world

我們希望本教程能夠幫助您在Docker上的Centos鏡像運(yùn)行Node.js。你可以獲得全部源代碼https://github.com/gasi/docker-node-hello。

上一篇:Docker Hub賬戶下一篇:Binaries