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

首頁 > 服務器 > Web服務器 > 正文

Docker實踐--部署Nodejs應用

2024-09-01 13:50:06
字體:
來源:轉載
供稿:網友

這個例子的目標是為了向大家展示如何在Docker的container里運行Node.js程序。我會先創建一個簡單的Node.js web

app,來構建一個鏡像。然后基于這個Image運行一個container。從而實現快速部署。

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

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

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

docker部署nodejs,docker,安裝nodejs,nodejs

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

docker部署nodejs,docker,安裝nodejs,nodejs

創建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部署nodejs,docker,安裝nodejs,nodejs

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

docker部署nodejs,docker,安裝nodejs,nodejs

運行鏡像

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

docker部署nodejs,docker,安裝nodejs,nodejs

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

docker部署nodejs,docker,安裝nodejs,nodejs

 測試

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

curl -i localhost:8888

docker部署nodejs,docker,安裝nodejs,nodejs

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

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VEVB武林網。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 丹阳市| 凤翔县| 广安市| 襄垣县| 阿克苏市| 天气| 陆良县| 红安县| 都匀市| 页游| 上思县| 密云县| 东乌| 青州市| 米泉市| 闻喜县| 壶关县| 铜梁县| 分宜县| 喀喇沁旗| 独山县| 南昌县| 黄大仙区| 阿瓦提县| 奉新县| 六枝特区| 保德县| 土默特右旗| 环江| 铅山县| 万年县| 晋中市| 疏附县| 南投市| 盈江县| 广水市| 洛南县| 内丘县| 林西县| 西贡区| 千阳县|