Docker實戰--部署簡單nodejs應用


如何在Docker的container里運行Node.js程序

主體思路:一個簡單的Node.js web app,來構建一個鏡像,然后基於這個鏡像,運行一個容器,從而實現快速部署。

操作環境:
虛擬機:ubuntu 16.04 LTE 64位

第一 先拉取基礎鏡像

sudo docker pull node:latest

node鏡像,star數很高,我們使用它作為基礎鏡像.latest為tag標簽,標識是哪個版本。這一步,也可以省略,后面的Dockerfile文件,會自動拉取該鏡像。

第二 創建Node.js程序

  1. 創建 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"
       }
     }
    
  2. 創建server.js

寫一個最簡單的web,監聽8888端口,返回Hello world。
使用了node官方建議的框架express

$ 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');
    });

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

第三 創建Dockerfile

Docker會依照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"]

第四 構建Image

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

sudo docker build -t weiqinl/node .


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

sudo docker images

第五 運行鏡像

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

第六 測試

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

     curl -i localhost:8888 
    

  1. 通過ubuntu自帶的瀏覽器查看

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

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

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

源碼地址:https://github.com/weiqinl/docker-node.git


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM