国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

在Docker快速部署Node.js應用的詳細步驟

2019-11-20 09:06:08
字體:
來源:轉載
供稿:網友

一、前言

可能還有一些同學不了解docker這個項目,docker是由go語言編寫的,一個快速部署的輕量級虛擬技術項目,他允許開發人員將自己的程序和運行環境一起打包,制作成一個docker的image(鏡像),這樣部署到服務器上,也只需要下載這個image就可以將程序跑起來,免去每次都安裝各種依賴和環境的麻煩,還能夠做到應用程序之間的隔離

二、實現準備

我會先創建一個簡單的Node.js web app,來構建一個鏡像。然后基于這個Image運行一個container。從而實現快速部署。

由于網絡的原因我的Node.js鏡像從國內的鏡像庫下載,而不是Docker Hub。

先從國內的鏡像網站上pull下一下nodejs鏡像。     

docker pull hub.c.163.com/nce2/nodejs:0.12.2

下載完后查看我們的鏡像,找到他的名稱,等會我們會用到

三、創建Node.js 程序

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

vi package.json
{ "name": "webtest", "version": "1.0.0", "description": "Node.js on Docker", "author": "lpxxn", "main": "server.js", "scripts": { "start": "node server.js" }, "dependencies": { "express": "^4.13.3" }}

創建server.js

vi server.js

寫一個最簡單web 這個web基于express框架,返回Hello word.注意我們監聽的是8888端口

'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

接下來主角上場了創建Dockerfile文件 這個文件是創建鏡像所必須的文件

vi Dockerfile

Docker會依照Dockerfile的內容來構建一個鏡像。我先給出完整的代碼,再一行一行的給出解釋

FROM hub.c.163.com/nce2/nodejs:0.12.2# Create app directoryRUN mkdir -p /home/ServiceWORKDIR /home/Service# Bundle app sourceCOPY . /home/ServiceRUN npm installEXPOSE 8888CMD [ "npm", "start" ]

我們來一句一句的解釋  

FROM hub.c.163.com/nce2/nodejs:0.12.2

FROM是構建鏡像的基礎源鏡像,hub.c.163.com/nce2/nodejs:0.12.2 這個是鏡像的名稱,也就是我們一開始從國內服務器上拉下來的那個Image。如果本地沒有Docker 會自己pull鏡像。

# Create app directoryRUN mkdir -p /home/ServiceWORKDIR /home/Service

第一句RUN 用于在Image里創建一個文件夾,將來用于保存我們的代碼。

第二句WORKDIR是將我們創建的文件夾做為工作目錄。

# Bundle app sourceCOPY . /home/ServiceRUN npm install

第一句的COPY是把本機當前目錄下的所有文件拷貝到Image的/home/Service文件夾下。

第二句的RUN 使用npm 安裝我們的app據需要的所有依賴。

EXPOSE 8888

由于我們的web app監聽的是8888端口,我們把這個端口暴露給主機,這樣我就能從外部訪問web了。

CMD [ "npm", "start" ]

這個我相信我不用解釋你也能看出來他是做什么的。運行npm start命令,這個命令會運行 node service.js來

啟動我們的web app。

五、構建Image

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

docker build -t mynodeapp .

別忘了最后的的那個點

構建完后查看一下我們的鏡像

六、運行鏡像

docker run -d -p 8888:8888 ac5

-d 表明容器會在后臺運行,-p 表示端口映射,把本機的8888商品映射到container的8888端口這樣外網就能通過本機的8888商品訪問我們的web了。

后面的ac5是我們Image的ID因為前3個就已經能定位出這個Image所以我就沒有把后邊的再寫出來。

通過docker ps 查看我們剛運行的Container的ID

打印log  7370就是我們的Container ID,和Image ID一樣,你也可以全寫出來,我比較懶就寫前4位,已經足夠標識出這個Container了

docker logs 7350

如果你想到Container里可以執行下面的命令,進入到里邊后就可以像操作普通的linux 一樣。如果想退出可執行exit命令。

七、測試

我們先通過curl 看能不能訪問我們的web。

curl -i localhost:8888

也可以通過瀏覽器來看一下

八、總結

好了,這個小教程到此就結束了,大家都學會了嗎?希望這篇文章能幫助你入門。如果有什么問題或者疑問可以留言交流。謝謝大家對武林網的支持。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 成武县| 麟游县| 波密县| 肇庆市| 上虞市| 龙游县| 江都市| 韶关市| 循化| 余庆县| 固阳县| 深圳市| 晴隆县| 宜宾县| 钦州市| 阿勒泰市| 洪洞县| 行唐县| 涪陵区| 金乡县| 余庆县| 桃江县| 博乐市| 邵阳市| 台南市| 蓬莱市| 双牌县| 长岛县| 龙江县| 宜丰县| 沂南县| 太和县| 伊金霍洛旗| 山阴县| 延吉市| 改则县| 松桃| 辛集市| 二连浩特市| 龙口市| 大宁县|