互联网服务web服务

如何使用docker建WEB服务器?

如何使用docker建WEB服务器?

参与4

1同行回答

dl528888dl528888系统运维工程师游戏公司
在docker里安装nginx或apache服务,然后把80对外暴漏。可以参考如下内容:本文的目标是建立一个Docker web app。这样,你就可以直观的感受,docker是如何部署一个web应用。首先,我们建立一个空目录来存放我们需要的文件。我们建立的是一个node.js的web服务应用。我们需要在当前目...显示全部

在docker里安装nginx或apache服务,然后把80对外暴漏。可以参考如下内容:

本文的目标是建立一个Docker web app。这样,你就可以直观的感受,docker是如何部署一个web应用。

首先,我们建立一个空目录来存放我们需要的文件。

我们建立的是一个node.js的web服务应用。我们需要在当前目录下建立如下三个文件。

1).gitignore

    node_modules/*  

2)package.json

    {

      \"name\": \"docker-centos-hello\",

      \"private\": true,

      \"version\": \"0.0.1\",

      \"description\": \"Node.js Hello world app on CentOS using docker\",

      \"author\": \"Daniel Gasienica \",

      \"dependencies\": {

        \"express\": \"3.2.4\"

      }

    }

3)server.js

    var express = require(\'express\'),

    app = express(),

    redis = require(\'redis\'),

    RedisStore = require(\'connect-redis\')(express),

    server = require(\'http\').createServer(app);

     

    app.configure(function() {

    app.use(express.cookieParser(\'keyboard-cat\'));

    app.use(express.session({

    store: new RedisStore({

    host: process.env.REDIS_HOST || \'localhost\',

    port: process.env.REDIS_PORT || 6379,

    db: process.env.REDIS_DB || 0

    }),

    cookie: {

    expires: false,

    maxAge: 30 * 24 * 60 * 60 * 1000

    }

    }));

    });

     

    app.get(\'/\', function(req, res) {

    res.json({

    status: \"ok\"

    });

    });

     

    var port = process.env.HTTP_PORT || 3000;

    server.listen(port);

    console.log(\'Listening on port \' + port);

配置Dockerfile

我们需要通过Dockerfile来配置我们的docker镜像。

    FROM ubuntu:14.04

    MAINTAINER zengjinlong <470910357@qq.com>

     

    RUN apt-get update

     

    #Install Redis

    RUN apt-get -y -qq install python redis-server

     

    RUN apt-get -y -qq install wget

     

    #Install Node

    RUN cd /opt && \

    wget http://nodejs.org/dist/v0.10.33/node-v0.10.33-linux-x64.tar.gz && \

    tar -xzf node-v0.10.33-linux-x64.tar.gz && \

    mv node-v0.10.33-linux-x64 node && \

    cd /usr/local/bin && \

    ln -s /opt/node/bin/* . && \

    rm -f /opt/node-v0.10.33-linux-x64.tar.gz

     

    #Set the working directory

    WORKDIR /src

    j

    CMD [\"/bin/bash\"]

有了Dockerfile之后,就可以通过docker build来建立我们的镜像。

    docker build -t minimicall/node_web:0.1 .

这里需要说明的是,你需要灵活的根据你的ubuntu真实的环境来变化中间的指令。例如,当我们第一次执行的时候,告诉我找不到python redis-server,我想应该是我的apt 源太out了,所以,我加了RUN apt-get update.就解决了这个问题。

当我wget的时候,说没有这个指令,那么我就得安装wget.而nodejs的地址,也是我去从nodejs的官网查找的。所以碰到问题,具体问题具体分析。

查看我们建立的镜像。

    micall@micall-ThinkPad:~/docker/nodejs_web_app$ sudo docker images

     

    REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE

    minimicall/node_web 0.1 730770dff17f 6 minutes ago 268.7 MB

    centos centos6 70441cac1ed5 2 weeks ago 215.8 MB

    ubuntu 14.04 5506de2b643b 4 weeks ago 199.3 MB

启动我们的镜像:

    sudo docker run -i -t --rm \

    > -p 3000:3000 \

    > -v `pwd`:/src \

    > minimicall/node_web:0.1

这时候我们已经进入到了这个镜像启动的容器里面了。

    root@d80a2ed6b4c0:/src#

执行下列命令

    root@d80a2ed6b4c0:/src# npm install --quiet > /dev/null

    npm WARN engine formidable@1.0.13: wanted: {\"node\":\"<0.9.0\"} (current: {\"node\":\"0.10.33\",\"npm\":\"1.4.28\"})

    root@d80a2ed6b4c0:/src# npm install -g nodemon --quiet > /dev/null

    root@d80a2ed6b4c0:/src# ls

    Dockerfile Dockerfile~ index.js~ package.json server.js src

    Dockerfile.centos index.js node_modules package.json~ server.js~

    root@d80a2ed6b4c0:/src# nodemon server.js

    22 Nov 14:37:31 - [nodemon] v1.2.1

    22 Nov 14:37:31 - [nodemon] to restart at any time, enter `rs`

    22 Nov 14:37:31 - [nodemon] watching: *.*

    22 Nov 14:37:31 - [nodemon] starting `node server.js`

    Listening on port 3000

这个时候用浏览器打开:http://localhost:3000/,会的到如下结果。

    {

    \"status\": \"ok\"

    }

收起
互联网服务 · 2016-01-22
浏览1343

提问者

无悔
软件开发工程师喵三汪四

问题来自

问题状态

  • 发布时间:2016-01-22
  • 关注会员:2 人
  • 问题浏览:4178
  • 最近回答:2016-01-22
  • X社区推广