【原】docker 部署nodejs

dockerfile如下:

FROM hub.c.163.com/public/nodejs:6.11.0

# Create app directory
RUN mkdir -p /home/Service
WORKDIR /home/Service

# Bundle app source
COPY . /home/Service

EXPOSE 3000
ENTRYPOINT  [ "npm", "start" ]

我们来一句一句的解释

FROM hub.c.163.com/public/nodejs:6.11.0
  FROM是构建镜像的基础源镜像,hub.c.163.com/public/nodejs:6.11.0 这个是镜像的名称,也就是我们一开始从国内服务器上拉下来的那个Image。如果本地没有Docker 会自己pull镜像。

RUN mkdir -p /home/Service
  RUN 用于在Image里创建一个文件夹,将来用于保存我们的代码。

WORKDIR /home/Service
  第二句WORKDIR是将我们创建的文件夹做为工作目录。

COPY . /home/Service
  第一句的COPY是把本机当前目录下的所有文件拷贝到Image的/home/Service文件夹下。

EXPOSE 8888
  由于我们的web app监听的是8888端口,我们把这个端口暴露给主机,这样我就能从外部访问web了。

ENTRYPOINT [ "npm", "start" ]
  运行npm start命令,这个命令会运行 node service.js来,,这里我之前网上看的是用的CMD,但是我用CMD不对,真实原因正在研究中,改成ENTRYPOINT 就好了。

这里的start是在node项目的package.json里定义的,如下:

{
  "name": "demo2",
  "version": "0.0.1",
  "description": "demo2",
  "main": "meadowlark.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "start":" node meadowlark.js"
  },
  "author": "",
  "license": "ISC",
  "dependencies": {
    "express": "^4.15.4",
    "mysql": "^2.14.1"
  }
}

构建Image

docker build -t mynodeapp .

运行镜像

docker run -d -p 8888:8888 ac5

你可能感兴趣的:(【原】docker 部署nodejs)