Nodejs on Docker

      網友投稿 652 2025-04-01

      nodejs-docker-webapp(zh-CN 翻譯文檔)

      copyright ? 2016 xgqfrms

      dockerizing a Node.js web app

      Dockerizing a Node.js web app

      這個例子的目的是告訴你如何把一個Node.js應用程序放入到Docker容器。 該指南旨在用于開發,而不是用于生產部署。 該指南還假定你有安裝Docker的經驗,且對Node.js應用程序是如何構建的,有一個基本的了解.

      在本指南的第一部分,我們將用Node.js創建一個簡單的Web應用程序, 然后我們將為該應用程序建立一個Docker映像, 最后我們將運行這個鏡像作為一個容器。

      Docker允許你把一個應用和它的所有依賴打包成一個標準化單元,稱為一個容器(container),用于軟件開發. 每一個容器(container)都是一個精簡到基本版本的Linux操作系統。 鏡像(image)是你加載到一個容器中的軟件。

      創建 Node.js 應用程序

      首先,創建一個新目錄,所有文件將會位于其中。 在此目錄中,創建一個package.json文件,描述你的應用程序及其依賴:

      { ??"name":?"docker_web_app", ??"version":?"1.0.0", ??"description":?"Node.js?on?Docker", ??"author":?"First?Last?", ??"main":?"server.js", ??"scripts":?{ ????"start":?"node?server.js" ??}, ??"dependencies":?{ ????"express":?"^4.13.3" ??} }

      然后,創建一個server.js文件,用來定義了一個使用Express.js框架的Web應用程序:

      Nodejs on Docker

      'use?strict'; const?express?=?require('express'); //?Constants const?PORT?=?8080; //?App const?app?=?express(); app.get('/',?function?(req,?res)?{ ??res.send('Hello?world\n'); }); app.listen(PORT); console.log('Running?on?http://localhost:'?+?PORT);

      在接下來的步驟中,我們將看看你如何在一個Docker容器內運行這個應用程序,使用官方Docker鏡像. 首先,你需要為你的應用程序構建一個Docker鏡像。

      創建一個 Dockerfile

      創建一個名為Dockerfile一個空文件:

      $?touch?Dockerfile

      在你喜歡的文本編輯器中打開Dockerfile

      我們需要做的第一件事就是定義要從什么鏡像構建我們想要構建的。 這里我們將使用最新的LTS(長期支持)版argon?,可用于Docker Hub的node:

      FROM?node:argon

      接下來,我們創建一個目錄用于在鏡像中保存應用程序的代碼, 這將是你的應用程序的工作目錄:

      #?Create?app?directoryRUN?mkdir?-p?/usr/src/appWORKDIR?/usr/src/app

      此鏡像自帶的Node.js和NPM已經安裝了,所以接下來我們需要做的就是使用npmbinary,來安裝你的應用程序的依賴:

      #?Install?app?dependenciesCOPY?package.json?/usr/src/app/RUN?npm?install

      要打包在Docker鏡像內的你的應用程序的源代碼,使用COPY指令:

      #?Bundle?app?sourceCOPY?.?/usr/src/app

      你的應用程序綁定到8080端口,所以你將使用EXPOSE指令把它映射,由docker守護程序(daemon):

      EXPOSE?8080

      最后但同樣重要,用CMD定義運行你的應用程序的命令,它定義了你的運行時。 在這里,我們將使用基礎的npm start這將運行node server.js來啟動你的服務器:

      CMD?[?"npm",?"start"?]

      PS:(npm start === node server.js)

      "scripts":?{ ????"start":?"node?server.js" ??}

      現在你的Dockerfile應該看起來像這樣的:

      FROM?node:argon#?Create?app?directoryRUN?mkdir?-p?/usr/src/appWORKDIR?/usr/src/app#?Install?app?dependenciesCOPY?package.json?/usr/src/app/RUN?npm?install#?Bundle?app?sourceCOPY?.?/usr/src/appEXPOSE?8080CMD?[?"npm",?"start"?]

      構建你的鏡像

      進入到Dockerfile所在的目錄并運行以下命令來構建Docker鏡像。?-t標志可以讓你標記你的鏡像,以便更容易發現以后使用docker images命令:

      $?docker?build?-t?/node-web-app?.

      你的鏡像現在將會被Docker列出:

      $?docker?images#?ExampleREPOSITORY??????????????????????TAG????????ID??????????????CREATEDnode????????????????????????????argon??????539c0211cd76????3?weeks?ago/node-web-app????latest?????d64d3505b0d2????1?minute?ago

      運行鏡像

      運行你的鏡像,帶有-d容器將運行在獨立模式下,讓容器在后臺運行。-p標志,將一個公共端口重定向到容器內的一個私有端口。運行你之前構建的鏡像:

      $?docker?run?-p?49160:8080?-d?/node-web-app

      打印你的應用程序的輸出:

      #?Get?container?ID$?docker?ps#?Print?app?output$?docker?logs?#?ExampleRunning?on?http://localhost:8080

      如果你需要進容器內可以使用exec命令:

      #?Enter?the?container$?docker?exec?-it??/bin/bash

      測試

      要測試你的應用程序,獲取的你的應用程序的Docker映射端口:

      $?docker?ps#?ExampleID????????????IMAGE????????????????????????????????COMMAND????...???PORTS ecce33b30ebf??/node-web-app:latest??npm?start??...???49160->8080

      在上面的例子中,Docker將容器的內部的8080端口映射到你的機器上的49160端口。

      現在你可以使用curl調用你的應用程序(如果需要的話,安裝命令:sudo apt-get install curl):

      $?curl?-i?localhost:49160HTTP/1.1?200?OK X-Powered-By:?Express Content-Type:?text/html;?charset=utf-8Content-Length:?12Date:?Sun,?02?Jun?2013?03:53:22?GMT Connection:?keep-alive Hello?world

      我們希望該教程幫助了你在Docker上啟動和運行一個簡單的Node.js應用程序。

      你可以找到有關的Docker和Node.js on Docker更多信息,在以下的地方:

      官方 Node.js Docker 鏡像

      Node.js Docker 最佳實踐指南

      官方 Docker 文檔

      Docker Tag on StackOverflow

      Docker Subreddit

      Docker for Windows

      Docker Hub

      cloud docker

      本文轉載自異步社區

      原文鏈接:https://www.epubit.com/articleDetails?id=NC7E3EF91C0300001D496165012501297

      Web應用防火墻 WAF

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:如何在Excel中插入或顯示Power View?
      下一篇:Excel數據分析功能使用教程
      相關文章
      亚洲AV无码乱码在线观看性色扶| 亚洲AV日韩AV永久无码色欲| 亚洲国产精品日韩| 亚洲国产欧美日韩精品一区二区三区| 亚洲人成7777影视在线观看| 亚洲妇女水蜜桃av网网站| 亚洲自偷自拍另类12p| 日韩亚洲一区二区三区| 亚洲人成人77777网站| 亚洲免费人成在线视频观看| 亚洲VA成无码人在线观看天堂| 亚洲欧洲精品无码AV| 亚洲产国偷V产偷V自拍色戒| 亚洲成人激情在线| 亚洲午夜久久久精品影院| 亚洲制服中文字幕第一区| 亚洲精品熟女国产| 亚洲一区二区免费视频| 亚洲首页国产精品丝袜| 亚洲精华液一二三产区| 在线观看亚洲网站| 亚洲婷婷国产精品电影人久久| 久久久久亚洲精品无码网址| 国产精品亚洲一区二区三区在线| 亚洲成A人片在线观看无码不卡| 久久精品国产亚洲AV网站| 亚洲人成影院在线| 亚洲天堂一区在线| 亚洲综合激情五月色一区| 亚洲AV一区二区三区四区| 亚洲成片观看四虎永久| 伊人久久亚洲综合| 婷婷亚洲综合五月天小说| 亚洲精品视频观看| 亚洲中文字幕无码中文| 国产亚洲综合久久| 在线a亚洲v天堂网2019无码| 久久亚洲私人国产精品vA| 亚洲精品二三区伊人久久| 亚洲第一街区偷拍街拍| 亚洲综合亚洲综合网成人|