mangreen / Some-Note

Development Memo
1 stars 0 forks source link

Docker 部署 node.js #20

Open mangreen opened 7 years ago

mangreen commented 7 years ago

http://www.jianshu.com/p/573ce72804da

1. 先拉取基礎鏡像

$ sudo docker pull node:latest

2. 第二創建Node.js程序

i. 創建package.json,並寫入相關信息和依賴

$ mkdir -p node/website && cd node/website
$ touch package.json
$ vi package.json
{
   "name": "website",
   "version": "0.0.1",
   "description": "Node.js on Docker",
   "author": "weiqinl",
   "main": "server.js",
   "scripts": {
     "start": "node server.js"
   },
   "dependencies": {
     "express": "^4.13.3"
   }
 }

ii. 創建server.js

$ touch server.js
$ vi server.js
'use strict';

    var express = require('express');

    var PORT = 8888;

    var app = express();
    app.get('/', function (req, res) {
      res.send('Hello world\n ' + now Date());
    });

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

3. 創建Dockerfile

$ cd ..
$ touch Dockerfile
$ vi Dockerfile
#设置基础镜像,如果本地没有该镜像,会从Docker.io服务器pull镜像
FROM node

#创建app目录,保存我们的代码
RUN mkdir -p /usr/src/node
#设置工作目录
WORKDIR /usr/src/node

#复制所有文件到 工作目录。
COPY . /usr/src/node

#编译运行node项目,使用npm安装程序的所有依赖,利用taobao的npm安装

WORKDIR /usr/src/node/website
RUN npm install --registry=https://registry.npm.taobao.org

#暴露container的端口
EXPOSE 8888

#运行命令
CMD ["npm", "start"]

4. 構建Image

在Dockerfile文件所在目錄下,運行下面命令來構建一個Image

$ sudo docker build -t weiqinl/node .

構建完後查看一下剛構建的鏡像:

$ sudo docker images

5. 運行鏡像

sudo docker run -d --name nodewebsite -p 8888:8888 weiqinl/node:latest

-d表示容器在後台運行 --name表示給容器別名nodewebsite -p表示端口映射。把本機的8888端口映射到容器的8888端口,這樣外網就能通過本機的8888端口,訪問我們的web了。 後面的weiqinl/node是image的REPOSITORY, latest的鏡像的TAG

6. 測試

我們先通過curl看是否能訪問web

$ curl -i localhost:8888

通過ubuntu自帶的瀏覽器查看

如果想進入容器,可以執行命令:

$ sudo docker exec -it weiqinl/node:latest /bin/bash

到此,Docker部署nodejs應用,已經完成。