欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

在Docker快速部署Node.js應(yīng)用的詳細(xì)步驟

 更新時(shí)間:2024年07月01日 11:33:16   作者:李  
這篇文章的目標(biāo)是為了向大家展示如何在Docker的container里運(yùn)行Node.js程序,文中通過(guò)圖文與示例代碼介紹的非常詳細(xì),有需要的朋友們可以參考借鑒。

一、前言

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

二、實(shí)現(xiàn)準(zhǔn)備

我會(huì)先創(chuàng)建一個(gè)簡(jiǎn)單的Node.js web app,來(lái)構(gòu)建一個(gè)鏡像。然后基于這個(gè)Image運(yùn)行一個(gè)container。從而實(shí)現(xiàn)快速部署。

由于網(wǎng)絡(luò)的原因我的Node.js鏡像從國(guó)內(nèi)的鏡像庫(kù)下載,而不是Docker Hub。

先從國(guó)內(nèi)的鏡像網(wǎng)站上pull下一下nodejs鏡像。     

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

下載完后查看我們的鏡像,找到他的名稱(chēng),等會(huì)我們會(huì)用到

三、創(chuàng)建Node.js 程序

創(chuàng)建package.json,并寫(xiě)入相關(guān)信息和依賴(lài)

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"
 }
}

創(chuàng)建server.js

vi server.js

寫(xiě)一個(gè)最簡(jiǎn)單web 這個(gè)web基于express框架,返回Hello word.注意我們監(jiān)聽(tīng)的是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);

四、創(chuàng)建Dockerfile

接下來(lái)主角上場(chǎng)了創(chuàng)建Dockerfile文件 這個(gè)文件是創(chuàng)建鏡像所必須的文件

vi Dockerfile

Docker會(huì)依照Dockerfile的內(nèi)容來(lái)構(gòu)建一個(gè)鏡像。我先給出完整的代碼,再一行一行的給出解釋

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

# Create app directory
RUN mkdir -p /home/Service
WORKDIR /home/Service

# Bundle app source
COPY . /home/Service
RUN npm install

EXPOSE 8888
CMD [ "npm", "start" ]

我們來(lái)一句一句的解釋  

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

FROM是構(gòu)建鏡像的基礎(chǔ)源鏡像,hub.c.163.com/nce2/nodejs:0.12.2 這個(gè)是鏡像的名稱(chēng),也就是我們一開(kāi)始從國(guó)內(nèi)服務(wù)器上拉下來(lái)的那個(gè)Image。如果本地沒(méi)有Docker 會(huì)自己pull鏡像。

# Create app directory
RUN mkdir -p /home/Service
WORKDIR /home/Service

第一句RUN 用于在Image里創(chuàng)建一個(gè)文件夾,將來(lái)用于保存我們的代碼。

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

# Bundle app source
COPY . /home/Service
RUN npm install

第一句的COPY是把本機(jī)當(dāng)前目錄下的所有文件拷貝到Image的/home/Service文件夾下。

第二句的RUN 使用npm 安裝我們的app據(jù)需要的所有依賴(lài)。

EXPOSE 8888

由于我們的web app監(jiān)聽(tīng)的是8888端口,我們把這個(gè)端口暴露給主機(jī),這樣我就能從外部訪(fǎng)問(wèn)web了。

CMD [ "npm", "start" ]

這個(gè)我相信我不用解釋你也能看出來(lái)他是做什么的。運(yùn)行npm start命令,這個(gè)命令會(huì)運(yùn)行 node service.js來(lái)

啟動(dòng)我們的web app。

五、構(gòu)建Image

在你Dockerfile文件所在的目錄下運(yùn)行下面的命令來(lái)構(gòu)建一個(gè)Image.

docker build -t mynodeapp .

別忘了最后的的那個(gè)點(diǎn)

構(gòu)建完后查看一下我們的鏡像

六、運(yùn)行鏡像

docker run -d -p 8888:8888 ac5

-d 表明容器會(huì)在后臺(tái)運(yùn)行,-p 表示端口映射,把本機(jī)的8888商品映射到container的8888端口這樣外網(wǎng)就能通過(guò)本機(jī)的8888商品訪(fǎng)問(wèn)我們的web了。

后面的ac5是我們Image的ID因?yàn)榍?個(gè)就已經(jīng)能定位出這個(gè)Image所以我就沒(méi)有把后邊的再寫(xiě)出來(lái)。

通過(guò)docker ps 查看我們剛運(yùn)行的Container的ID

打印log  7370就是我們的Container ID,和Image ID一樣,你也可以全寫(xiě)出來(lái),我比較懶就寫(xiě)前4位,已經(jīng)足夠標(biāo)識(shí)出這個(gè)Container了

docker logs 7350

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

七、測(cè)試

我們先通過(guò)curl 看能不能訪(fǎng)問(wèn)我們的web。

curl -i localhost:8888

也可以通過(guò)瀏覽器來(lái)看一下

八、總結(jié)

好了,這個(gè)小教程到此就結(jié)束了,大家都學(xué)會(huì)了嗎?希望這篇文章能幫助你入門(mén)。如果有什么問(wèn)題或者疑問(wèn)可以留言交流。謝謝大家對(duì)腳本之家的支持。

相關(guān)文章

  • Node.js模塊全局安裝路徑配置方法

    Node.js模塊全局安裝路徑配置方法

    今天小編就為大家分享一篇Node.js模塊全局安裝路徑配置方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-05-05
  • 寶塔部署nodejs項(xiàng)目的實(shí)戰(zhàn)步驟

    寶塔部署nodejs項(xiàng)目的實(shí)戰(zhàn)步驟

    前段時(shí)間部署node項(xiàng)目的時(shí)候出現(xiàn)了一點(diǎn)問(wèn)題,所以想著給大家總結(jié)下,這篇文章主要給大家介紹了關(guān)于寶塔部署nodejs項(xiàng)目的實(shí)戰(zhàn)步驟,文中通過(guò)圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2022-12-12
  • 10個(gè)最優(yōu)秀的Node.js MVC框架

    10個(gè)最優(yōu)秀的Node.js MVC框架

    這篇文章主要為大家詳細(xì)介紹了10個(gè)最優(yōu)秀的Node.js MVC框架,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-08-08
  • node.js自動(dòng)上傳ftp的腳本分享

    node.js自動(dòng)上傳ftp的腳本分享

    這篇文章主要給大家介紹了一個(gè)關(guān)于node.js自動(dòng)上傳ftp腳本的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2018-06-06
  • Nodejs中crypto模塊的安全知識(shí)講解

    Nodejs中crypto模塊的安全知識(shí)講解

    本篇文章給大家詳細(xì)介紹了Nodejs中crypto模塊的安全知識(shí)的相關(guān)內(nèi)容,需要的朋友跟著小編一下學(xué)習(xí)參考下吧。
    2018-01-01
  • 測(cè)試驅(qū)動(dòng)ChatGPT編程示例詳解

    測(cè)試驅(qū)動(dòng)ChatGPT編程示例詳解

    這篇文章主要為大家介紹了測(cè)試驅(qū)動(dòng)ChatGPT編程示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-03-03
  • Node.js安裝配置圖文教程

    Node.js安裝配置圖文教程

    這篇文章主要為大家詳細(xì)介紹了Node.js安裝配置的圖文教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-05-05
  • 關(guān)于node.js版本npm -v報(bào)錯(cuò)問(wèn)題的解決方法

    關(guān)于node.js版本npm -v報(bào)錯(cuò)問(wèn)題的解決方法

    最近工作中遇到了些問(wèn)題,這里總結(jié)下,下面這篇文章主要給大家介紹了關(guān)于node.js版本npm -v報(bào)錯(cuò)問(wèn)題的解決方法,文中通過(guò)圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2023-04-04
  • node.js使用redis儲(chǔ)存session的方法

    node.js使用redis儲(chǔ)存session的方法

    這篇文章主要介紹了node.js使用redis儲(chǔ)存session的方法,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2018-09-09
  • Node.js中的模塊化,npm包管理器詳解

    Node.js中的模塊化,npm包管理器詳解

    這篇文章主要介紹了node模塊與npm包管理工具,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2021-09-09

最新評(píng)論