使用Docker部署Node應用

上篇《前端也要學Docker啊!》介紹了 Docker 及它的三個主要概念:Image(鏡像)、Container
(容器)、Registry(倉庫) 以及Docker安裝。前端

本篇咱們來動手實踐:在本地建立一個本身的鏡像(Node應用),使用該鏡像建立容器並執行容器中的Node應用。node

建立一個Node項目

在根目錄建立index.jsdocker

//index.js
const Koa = require('koa');
const app = new Koa();

app.use(async ctx => {
  ctx.body = 'Hello Docker O(∩_∩)O~~';
});

app.listen(3000);

建立 Docker 鏡像須要用到 docker build命令,而docker build命令又是根據 Dockerfile 配置文件來構建鏡像,因此咱們要在項目根目錄建立一個 Dockerfile 文件:npm

#Dockerfile
FROM node:10.13-alpine #項目的基礎依賴
MAINTAINER chenLong #項目維護者
COPY . . #將本機根目錄全部文件拷貝到容器的根目錄下 這個能夠根據喜愛調節路徑
EXPOSE 3000 #容器對外暴露的端口
RUN npm i #安裝node依賴
CMD npm start #在容器環境裏執行的命令

你能夠到 Docker 官網查看詳細的Dockfile說明json

構建鏡像

上面 Node 代碼已經完成了,咱們使用 yarn init -ynpm init -y 完成package.json初始化,而後安裝一個koa依賴:執行yarn add koanpm i koasegmentfault

而後咱們在本地跑一下 node 程序:node index.js,打開瀏覽器輸入 localhost:3000 ,能夠看到瀏覽器中成功顯示了 Hello Docker O(∩_∩)O~~ 。
圖片描述瀏覽器

程序沒問題,咱們開始構建這個鏡像,執行命令:docker build -t docker-demo/hello-docker:v1 . (注意最後有個 . 是必須的)app

  • -t: --tag簡寫,鏡像的名字及標籤,一般 name:tag 或者 name 格式;能夠在一次構建中爲一個鏡像設置多個標籤。

上面的 docker-demo/hello-docker是咱們定義的鏡像名稱,v1是標籤名稱(相似版本號)koa

圖片描述
圖中藍色框表示 Dockerfile 的執行步驟。此時一個名爲docker-demo/hello-docker的鏡像已經建立完成了,如今咱們執行docker images查看一下:
圖片描述async

表示本地的鏡像列表中已經有了咱們剛纔建立的docker-demo/hello-docker

讓Node程序在Docker中跑起來

上面已經建立好了鏡像,裏面包含着咱們寫的代碼,如今咱們須要把代碼運行起來。
很是簡單,咱們使用docker run命令使用鏡像建立一個容器實例(此刻腦海中浮現 var p1 = new Person() )。

咱們執行命令: docker run -i -t -p 8080:3000 docker-demo/hello-docker:v1

  • -i: 以交互模式運行容器,一般與 -t 同時使用;
  • -t: 爲容器從新分配一個僞輸入終端,一般與 -i 同時使用;
  • -p: 指定端口映射,格式爲:主機(宿主)端口:容器端口,這裏將容器的3000端口與宿主機的8080端口映射

圖片描述

打開瀏覽器,運行localhost:8080:

圖片描述

完美,容器裏的代碼已經跑起來了!

總結

  1. 在項目根目錄建立 Dockerfile 並配置
  2. 使用 docker build 命令建立Docker鏡像,該命令會根據 Dockerfile 裏的配置來構建鏡像
  3. 使用 docker run 命令根據鏡像建立對應的容器實例並運行
相關文章
相關標籤/搜索