文章目录
  1. 1. 构建最新的nodejs docker服务器
  2. 2. Create app directory
  3. 3. Install app dependencies
  4. 4. Bundle app source

构建最新的nodejs docker服务器

参考文档

  • 新建一个目录作为我的dockerImages的目录,然后执行:

      mkdir /Users/samhu/Public/dockerImages
      
    
  • 新建package.json

    ```
    {
    “name”: “docker_web_app”,
    “version”: “1.0.0”,
    “description”: “Node.js on Docker”,
    “author”: “First Last first.last@example.com“,
    “main”: “server.js”,
    “scripts”: {
    “start”: “node server.js”
    },
    “dependencies”: {
    “express”: “^4.13.3”
    }

}

```
  • 新建server.js文件
'use strict';

const express = require('express');

// Constants
 const PORT = 8080;
//
// // App
 const app = express();
 app.get('/', function (req, res) {
   res.send('Hello world\n');
   });

   app.listen(PORT);
   console.log('Running on http://localhost:' + PORT);


```	


        
* 新建Dockerfile

        vi Dockerfile 
        
内容为:

FROM node:argon

Create app directory

RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app

Install app dependencies

COPY package.json /usr/src/app/
RUN npm install

Bundle app source

COPY . /usr/src/app

VOLUME [“/var/www”, “/usr/src/app”, “/var/nginx”]

EXPOSE 8080
#CMD [ “npm”, “start” ]

RUN PORT=8080 npm start



CMD内容 npm start 会执行 node server.js这个命令。。。。。

最后在dockerImage目录下,build成image:

  docker build -t sam.hu/node-web-app . 
  


启动一个nodejs应用服务器,端口号是40000:

  docker run -p 40000:8080 --rm -it -v $(pwd):/usr/src/app sam.hu/node-web-app


不加 `-it` 是为容器启动




查看docker容器使用情况:
  
  docker stats
  
  
# 安装Apache Bench(ab)作压力测试


三种方式:

* 源码安装

[download](http://httpd.apache.org/)

下载后解压,终端执行:

    ./configuare
    
* 二进制安装

      命令行忘记了	
      
* 命令行安装

      yum install httpd
      

## 使用ab测试并发

      ab -n 5000 -c 600 http://www.jinjiang.com/
      
如果出现错误:
  
  enchmarking www.jinjiang.com (be patient)
  socket: Too many open files (24)
  
则是因为服务器对并发文件连接有open files限制	,登陆服务器执行:


  ulimit -a  
  
找到:

  open files                      (-n) 1024	
  

调整可以打开的文件数:

   ulimit -n 65535


同时修改nginx.conf添加

  worker_rlimit_nofile 65535;
  
但是在nginx服务器可以打开的文件数量受你操作系统的限制,所以编辑
`/etc/sysctl.conf` 添加如下内容:

  fs.file-max = 70000
  
保存退出,从新读取系统配置

`sysctl -p`

再编辑 `/etc/security/limits.conf` 添加内容:

  soft nofile 10000
  hard nofile 30000

此修改内容需要reboot系统才能生效,所以务必从新启动下服务器。

再次查看系统输出

  ulimit -Hn
  ulimit -Sn	

输出:

30000 10000
文章目录
  1. 1. 构建最新的nodejs docker服务器
  2. 2. Create app directory
  3. 3. Install app dependencies
  4. 4. Bundle app source