精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

使用Docker Compose改善Node.js的開發

開發 前端
本文中,我們以Express.js為一個示例展開,需要實現了解一丁點Node.js和npm的基礎知識。還要了解Express.js框架的基礎知識。

在過去的幾年中,Docker和Node.js都變得非常流行。對于開發人員來說利用這些新技術來改善自己的開發體驗很有必要,而且在此過程中還可以學習新技術。遵循"Coding到老,學習到老,折騰到老"的宗旨,本文我們將介紹將如何結合Node.js與Docker來改善開發人員體驗,包括使用docker build和利用Docker Compose來實現無縫的本地前端開發環境。

[[375856]]

概述

本文中,我們以Express.js為一個示例展開,需要實現了解一丁點Node.js和npm的基礎知識。還要了解Express.js框架的基礎知識。

對Docker也要有一定的概念和要會基礎操作(不會也沒關系,很容易)。

使用Docker Compose改善Node.js的開發

最后本文全程使用Linux(Mac) shell終端命令行。

創建Express.js項目

為了要生成示范應用程序,需要使用Express應用程序生成器。需要運行以下npx命令行:

  1. npx express-generator --view=pug --git <app-name> 

Express生成器將生成Express應用。--view=pub選項表示使用pug視圖引擎。--git表示用來給項目添加一個git .gitignore文件。

生成效果如下:

使用Docker Compose改善Node.js的開發

測試Express應用

要測試該應用程序,需要運行npm install安裝所有必需的npm模塊。然后,運行以下命令以啟動應用程序:

  1. DEBUG=nodejs-docker-express:* npm start 

如果沒有異常,應該會到一條類似的消息。

  1. nodejs-docker-express:server Listening on port 3000 

上面的命令非常簡單:它運行一個環境變量DEBUG=nodejs-docker-express,用來表示服務器進行詳細的調試。

對Windows系統,使用的參數要修改為:

  1. set DEBUG=nodejs-docker-express:* & npm start 

現在打開瀏覽器,在地址欄并輸入localhost:3000并訪問:

使用Docker Compose改善Node.js的開發

這樣示例的Express.js應用就已經在運行OK了。是不是非常簡單?有此基本的"Hello,World!"為基礎,我們進一步深入。

Docker多階段構建

容器化應用程序有很多好處:首先,無論運行平臺是什么,其行為都相同。借助Docker容器,應用程序可以輕松部署到各個公有容器云(比如AWS Fargate,Google Cloud Run),自建的K8S集群中,甚至本地docker上。

容器化,基礎是Dockerfile。Dockerfile是構建Docker鏡像的基礎。用Dockerfile編譯生成的鏡像運行時,就稱之為容器。

使用Docker Compose改善Node.js的開發

如圖示,整個過程非常簡單:從Dockerfile構建Docker鏡像。運行鏡像,得到運行時容器。

Dockerfile

Dockerfile有一些類似命令行的語句:

  1. FROM node:14-alpine as base 
  2. WORKDIR /src 
  3. COPY package*.json / 
  4. EXPOSE 3000 
  5. FROM base as production 
  6. ENV NODE_ENV=production 
  7. RUN npm ci 
  8. COPY . / 
  9. CMD ["node", "bin/www"] 
  10.  
  11. FROM base as dev 
  12. ENV NODE_ENV=development 
  13. RUN npm install -g nodemon && npm install 
  14. COPY . / 
  15. CMD ["nodemon", "bin/www"] 

通過Docker鏡像的分層繼承,創建了一個精簡的production鏡像和一個功能更豐富,以開發為重點的dev鏡像。

在Dockerfile中,使用了多階段構建,整個過程分為三個階段:base,production和dev。production和dev依賴于base,base為node:14-alpine的基礎鏡像,該基礎鏡像需要從DockerHub獲取,這是一個官方Alpine基礎OS的Node.js官方鏡像,主鏡像為345MB,Node.js鏡像大概不到40M。

  1. WORKDIR /src 
  2. COPY package*.json / 
  3. EXPOSE 3000 

WORKDIR語句設置了Docker運行的工作目錄,其后的命令都在該工作目錄運行。COPY語句,復制package*.json(package.json和package-lock.json)容器中。

EXPOSE語句,設置Node.js Express Web服務器的監聽端口。上述步驟對于開發和生產階段都是通用的。

現在我們來看看生產目標階段是如何構建的。

production

在生產階段,繼續從基礎階段開始的工作,FROM語句指示Docker從base開始。ENV語句設置Docker將環境變量NODE_ENV為production。

  1. FROM base as production 
  2. ENV NODE_ENV=production 
  3. RUN npm ci 
  4. COPY . / 
  5. CMD ["node", "bin/www"] 

變量ENV設置為production可以使性能提高三倍,并且提供一些其他優化,比如緩存視圖。npm install命令只會安裝主要依賴項,忽略開發依賴項。這些設置非常適合生產環境。

接著使用RUN語句運行npm ci而非npm install。npm ci適用于持續集成和部署。和npm install相比,會繞過某些面向用戶的功能。當然,npm ci需要一個package-lock.json文件才能工作。

之后,還是使用COPY語句將代碼復制到工作目錄。

最后使用CMD語句,運行Node應用服務器和/srcbin/www

dev

我們利用了多階段構建,并在開發階段添加開發所需的組件:

  1. FROM base as dev 
  2. ENV NODE_ENV=development 
  3. RUN npm install -g nodemon && npm install 
  4. COPY . / 
  5. CMD ["nodemon", "bin/www"] 

大體上和生產極端類似,差異為NODE_ENV環境變量設置為development。

接著,用RUN語句安裝nodemon。每當文件更改時,nodemon都會重新啟動服務器,從而開發體驗更加流暢。同時執行npm install,該命令會遞歸安裝dev依賴項。例如,如果要使用Jest測試應用程序,那將是開發依賴項之一。

請注意,這兩個命令通過&&放在一起,創建更少的Docker層,于構建緩存非常有用。這是撰寫Dockerfile時候常用的一個技巧。

和生產階段相同,將代碼復制到容器。但是,用nodemon取代了Node服務器,這樣在每次文件/src更改時會重新啟動它。

.dockerignore

和git的.gitignore一樣,docker也使用.dockerignore來忽略不想放入Docker鏡像的文件。通過忽略無關的文件更改,它有助于使Docker鏡像保持身材,而且能使構建緩存更高效。本示例中.dockerignore

  1. .git 
  2. node_modules 

非常簡單,告訴Docker不COPY.git文件夾和node_modules從主機復制到Docker容器。

使用Docker Compose

到目前為止,我們創建一個使用運行Node.js Express應用程序Docker所需的大部分功能。為了更便捷,我們還建議用Docker Compose,這樣可以更輕松地使用單個或多個容器運行應用程序。這樣也無需要記住很長的命令來構建或運行容器。只需通過:

  1. docker-compose build 
  2. docker-compose up 

但是docker-compose使用yml的配置文件和dockerfile略有不同:

使用Docker Compose改善Node.js的開發

上述,我們指定Docker Compose的版本,在本例中為3.8,對應Docker引擎19.0.3支持的最新版本。這樣可以支持多階段Docker構建。

接著,指定正在使用的服務。在本教程中,只有一個名為web的服務,具有context為當前目錄的構建以及一個重要的構建參數target設置為dev。這告訴Docker在dev階段構建Docker映像。

之后,通過volumes制定 Docker卷。它指示Docker從Docker容器上的./和主機本地/src目錄復制和同步更改。當我們在主機中更改文件時,這將很有用,并且文件也將立即反映到容器中。

command語句運行npm run start:dev,start:dev執行內容定義在package.json,內容為:

  1. "start:dev": "nodemon ./bin/www" 

表示使用nodemon啟動Web服務器。在開發環境中,可以在每次保存文件時重新啟動服務器。

接下來,用ports語句設置docker端口映射主機的3000端口與容器3000端口。在構建容器時,公開了端口3000, Web服務器就會在3000上運行。

最后,設置了兩個環境變量。首先,將其NODE_ENV設置為development,因為這樣可以看到詳細的Debug信息,也沒有任何視圖緩存。然后,將debug設置為*,讓Web服務器打印出所有內容的詳細調試消息。

測試應用程序

前面,設置了弄好了基礎構建配置文件,接著構建Docker鏡像。使用BuildKit優化Docker構建。啟用BuildKit可以更快地構建Docker鏡像,運行以下命令:

  1. COMPOSE_DOCKER_CLI_BUILD=1 DOCKER_BUILDKIT=1 docker-compose build 

該命令告訴Compose在BuildKit上構建Docker鏡像。它應該在一段時間內運行并構建Docker鏡像,如下所示:

使用Docker Compose改善Node.js的開發

Docker鏡像大約在14秒內構建完成,使用BuildKit可以更快。運行該鏡像:

docker-compose up

使用Docker Compose改善Node.js的開發

然后瀏覽器訪問localhost:3000:

使用Docker Compose改善Node.js的開發

這樣我們,自配置的應用程序在Docker上已經完美運行。我們來改改源文件,看看效果。

我們修改下源碼將" Welcome to Express"更改為" Welcome to Express with Docker"來測試。在源文件目錄/src下,找到routes/index.jsline文件,修改語句為:

  1. res.render('index', { title: 'Express with Docker' }); 

保存文件,然后可以看到Web服務器已經重新啟動,表示Docker卷和nodemon可以都可以正常工作。

使用Docker Compose改善Node.js的開發

F5刷新瀏覽器,內容已經修改:

使用Docker Compose改善Node.js的開發

總結

本文中我們利用Docker和Docker Compose構建了一個簡單的Nodejs的開發和運行環境。Node.js和docker的配合很好。通過使用docker-compose,開發體驗更加流暢。當然這這是一個很簡單的開始,對于更復雜的應用(比如需要訪問數據庫)才是Docker Compose的用武之地,他可以同時啟動和管理多個容器,比如給開發環境增加Mongo或MySQL添加為應用程序的數據源,只需很輕松地增加一個docker-compose配置的服務語句就可以搞定整個環境。

 

責任編輯:趙寧寧 來源: 今日頭條
相關推薦

2022-08-28 16:30:34

Node.jsDocker指令

2015-03-10 10:59:18

Node.js開發指南基礎介紹

2012-09-29 11:13:15

Node.JS前端開發Node.js打包

2011-12-16 10:08:36

Node.js

2018-08-30 16:08:37

Node.js腳手架工具

2011-10-24 16:16:02

Node.js

2018-06-11 14:39:57

前端腳手架工具node.js

2024-07-12 14:54:48

2023-01-10 14:11:26

2013-11-01 09:34:56

Node.js技術

2020-09-04 15:06:04

Docker容器化Node.js

2022-01-07 08:00:00

Node.js開發Web

2011-11-10 11:08:34

Node.js

2019-05-05 11:47:09

TypeScript開發Node.js

2020-02-25 12:27:59

Node.jsWeb開發前端

2021-12-28 20:04:23

Node.js開發JavaScript

2021-12-25 22:29:57

Node.js 微任務處理事件循環

2020-05-29 15:33:28

Node.js框架JavaScript

2012-02-03 09:25:39

Node.js

2021-07-16 04:56:03

NodejsAddon
點贊
收藏

51CTO技術棧公眾號

欧美极品jizzhd欧美| 欧美在线视频一二三| 精品人妻一区二区三| 一二三四区在线观看| 成人黄色一级视频| 国产精品久久久久99| 国产黄色片在线免费观看| 久久影视三级福利片| 欧美吻胸吃奶大尺度电影| 成人午夜免费剧场| 美国一级片在线免费观看视频| 紧缚奴在线一区二区三区| 久久久视频在线| 国产免费嫩草影院| 久久精品国产亚洲5555| 欧美剧情片在线观看| 无码专区aaaaaa免费视频| 97电影在线| 99久久精品国产毛片| 国产欧美日韩精品丝袜高跟鞋| 偷偷操不一样的久久| 国产精品久久久久蜜臀| 精品呦交小u女在线| 日本美女久久久| 成人一级视频| 色女孩综合影院| 欧美乱大交xxxxx潮喷l头像| 久草资源在线| 中文字幕av一区二区三区高| 国产专区一区二区三区| 成人黄色在线观看视频| 久久99精品一区二区三区三区| 2018日韩中文字幕| 国产无遮挡aaa片爽爽| 久久久久av| 中文字幕在线观看亚洲| 国产又粗又猛又爽又黄av| 欧美理论电影在线精品| 精品国产123| 无码人妻丰满熟妇区毛片蜜桃精品| 久久精品资源| 欧美性猛交xxxx乱大交退制版| 国产精品宾馆在线精品酒店| 136福利第一导航国产在线| 亚洲欧美国产77777| 综合操久久久| 黄页视频在线播放| 亚洲色图制服诱惑| 大地资源第二页在线观看高清版| 色多多视频在线观看| 国产欧美精品一区二区色综合朱莉| 你懂的网址一区二区三区| 无码国产精品96久久久久| 懂色av噜噜一区二区三区av| 国产成人成网站在线播放青青| 国内老熟妇对白hdxxxx| 国产精品一二三四| 成人在线观看网址| 老熟妇高潮一区二区高清视频 | 任你操这里只有精品| 免费毛片b在线观看| 精品久久久久久久大神国产| 免费看日本毛片| 亚洲精品mv| 欧美色老头old∨ideo| 国产一二三区av| 国产成人免费av一区二区午夜 | 亚洲欧美电影一区二区| 糖心vlog在线免费观看| 日本资源在线| 欧美性jizz18性欧美| 成人在线观看黄| 五月天色综合| 日韩精品中文字幕在线一区| 色综合久久五月| 国产不卡av一区二区| 日韩在线视频观看| 国精品无码一区二区三区| 黄色欧美日韩| 国产精品高潮粉嫩av| 国产日韩一级片| 成人免费高清视频| 日韩高清国产精品| 粗大黑人巨茎大战欧美成人| 亚洲sss视频在线视频| 国产一区亚洲二区三区| 欧美亚洲综合视频| 欧美精品一区二区蜜臀亚洲| 午夜精产品一区二区在线观看的| 91久久高清国语自产拍| 久久久久久久色| 国产女主播喷水视频在线观看| 看片的网站亚洲| 国产视频精品网| 91在线视频免费看| 亚洲曰韩产成在线| 国产三级日本三级在线播放| 国产精品成人**免费视频| 亚洲精品一区二区三区四区高清| 亚洲一区二区自偷自拍 | 亚洲欧洲三级电影| 成人免费在线网| 国产麻豆一区| 国产视频一区在线| 亚洲国产成人精品综合99| 天堂在线一区二区| 成人av免费在线看| 91福利在线视频| 欧美日韩一二三四五区| 亚洲制服中文字幕| 国产一区不卡| 久久久久久久久久av| 一区二区 亚洲| 2020国产精品久久精品美国| 国产在线观看欧美| 久久精品黄色| 一区二区三区在线播放欧美| 日韩免费视频网站| 国产一区福利在线| 色吧亚洲视频| 澳门成人av网| 日韩高清a**址| 国产在线观看成人| 国产一区美女在线| 欧美日韩在线免费观看视频| 国产 日韩 欧美一区| 亚洲黄色在线看| 清纯粉嫩极品夜夜嗨av| 激情综合网激情| 亚洲最大免费| 日韩精品第一| 亚洲一区二区国产| 国产一级免费视频| 久久久久久久久免费| 中国丰满人妻videoshd | 黄色激情视频在线观看| 国产乱码精品一区二区三区忘忧草 | 成人疯狂猛交xxx| 福利在线视频导航| 91国内精品野花午夜精品| 李宗瑞91在线正在播放| 99亚洲伊人久久精品影院红桃| 成人av免费在线看| 精精国产xxxx视频在线中文版 | 色综合天天综合| 性欧美丰满熟妇xxxx性仙踪林| 国产欧美欧美| 美国av一区二区三区| 天堂av在线| 亚洲美女精品成人在线视频| 男人天堂2024| 国产日韩欧美不卡在线| 九色porny91| 欧美成人milf| 92国产精品视频| 日本在线视频中文有码| 日韩午夜激情免费电影| 久久网中文字幕| av电影一区二区| 不卡影院一区二区| 成人羞羞视频播放网站| 国产日韩欧美日韩大片| www久久日com| 亚洲第一精品久久忘忧草社区| 国产一级生活片| 91麻豆国产福利在线观看| 国产精品动漫网站| 成人亚洲一区二区| 99re在线观看| 小早川怜子影音先锋在线观看| 亚洲色图美腿丝袜| 91国内精品久久久| 亚洲五码中文字幕| 亚洲欧美视频在线播放| 免费看精品久久片| 青青在线免费视频| 亚洲人成网亚洲欧洲无码| 国产精品视频1区| 超级碰碰不卡在线视频| 亚洲欧洲日韩国产| 国产三级伦理片| 疯狂蹂躏欧美一区二区精品| 精品丰满少妇一区二区三区| 成人久久18免费网站麻豆 | 国产精品1区2区3区| 国产极品尤物在线| 久久国产综合| 国产私拍一区| 日韩在线你懂得| 69久久夜色精品国产69乱青草| av福利在线播放| 精品剧情在线观看| 欧美成人一区二区视频| 亚洲国产成人av| 长河落日免费高清观看| www.亚洲色图| 亚洲黄色av片| 欧美亚洲在线| 久久www视频| 精品大片一区二区| 国产精品久久亚洲| 欧美在线se| 欧美专区中文字幕| 黄色小说在线播放| 日韩在线视频国产| 欧美成人综合在线| 精品国产麻豆免费人成网站| 在线播放亚洲精品| 欧美视频在线观看免费网址| 欧美三级日本三级| 中文在线一区二区| 野花社区视频在线观看| 国产精品亚洲а∨天堂免在线| 国产成人无码av在线播放dvd| 亚洲网站啪啪| 无码人妻精品一区二区三区99v| 蜜桃精品噜噜噜成人av| 97超碰资源| 成人激情久久| 成人精品久久av网站| 欧美第一视频| 欧美在线观看日本一区| 蜜臀av国内免费精品久久久夜夜| 久久夜色精品国产| 日本三级在线视频| 一个人www欧美| 欧洲亚洲精品视频| 亚洲激情在线观看| 人妻精品一区二区三区| 日韩一级精品视频在线观看| 97人妻精品一区二区三区| 欧美丝袜丝交足nylons| 日韩免费av网站| 在线视频国内一区二区| 黄色av一级片| 色综合一区二区| 黄色av网站免费观看| 懂色aⅴ精品一区二区三区蜜月| 91精品国产高潮对白| 亚洲国产精品自拍| 久久久久久久伊人| 亚洲成人免费av| 日韩激情在线播放| 午夜精品久久久久久久| 欧美成人精品欧美一级乱黄| 亚洲成人综合网站| 日韩少妇裸体做爰视频| 五月天丁香久久| 日本中文在线播放| 一本大道久久a久久综合婷婷| 精产国品一区二区| 欧美亚洲动漫制服丝袜| 亚洲一卡二卡在线| 91精品国产综合久久婷婷香蕉 | 日韩高清有码在线| 五月天婷婷在线观看| 亚洲精品自拍偷拍| 九色视频在线观看免费播放| 在线观看久久av| 蜜桃av在线免费观看| 欧美理论片在线观看| 久久免费电影| 欧美做受高潮电影o| 成人看片网页| 亚洲a∨日韩av高清在线观看| 久久精品免视看国产成人| 国产经典一区二区三区| 亚洲瘦老头同性70tv| 日韩精品久久一区| 性xxxx欧美老肥妇牲乱| 欧美亚洲色图视频| 国产亚洲毛片| av亚洲天堂网| 成人手机在线视频| 性欧美一区二区| √…a在线天堂一区| xxxx 国产| 欧美日韩中文一区| 亚洲成人一二三区| 亚洲天堂免费观看| 国产在线观看av| 欧美中文字幕在线| 91麻豆精品一二三区在线| 国产亚洲一区在线播放 | 免费网站在线观看视频| 亚洲女优在线| 亚洲成人手机在线观看| 91在线国产福利| 国产高清视频免费在线观看| 午夜精品影院在线观看| 一级全黄少妇性色生活片| 亚洲成人久久一区| eeuss影院www在线观看| 久久久久久香蕉网| 久久人体av| 久久国产手机看片| 99久久婷婷这里只有精品 | 亚洲毛片在线免费观看| www久久日com| 国产精品久久久av久久久| 亚洲码欧美码一区二区三区| 日韩欧美一区二区三区四区五区 | 国语自产精品视频在线看抢先版图片| 国产精品字幕| 国产一区二区无遮挡 | 国产精品秘入口18禁麻豆免会员| 精油按摩中文字幕久久| 亚洲av无码国产精品麻豆天美| 亚洲综合一区在线| 亚洲图片在线播放| 亚洲女人被黑人巨大进入| 免费影视亚洲| 亚洲free性xxxx护士白浆| jvid福利在线一区二区| 激情深爱综合网| 高清shemale亚洲人妖| 日韩女同一区二区三区| 精品久久久久久国产| 亚洲国产剧情在线观看| 日韩视频在线免费| 国产福利一区二区三区在线播放| 免费日韩电影在线观看| 亚洲美女啪啪| 欧美激情 亚洲| 亚洲综合一区二区三区| a级片免费观看| 欧美成人在线免费| 24小时成人在线视频| 亚洲欧美精品在线观看| 丝袜亚洲另类丝袜在线| 亚洲做受高潮无遮挡| 福利微拍一区二区| 五月婷婷丁香六月| 奇米四色中文综合久久| 日本成人7777| 逼特逼视频在线| 久久久久久久久久久黄色| 91精品国产高清一区二区三密臀| 亚洲国产精品女人久久久| 成年人黄色大片在线| 国产手机精品在线| 夜久久久久久| aaaaa级少妇高潮大片免费看| 精品国产福利视频| 你懂的视频在线播放| 青草青草久热精品视频在线网站| 日韩系列在线| 国模杨依粉嫩蝴蝶150p| 久久久99精品免费观看| 黄色网址中文字幕| 在线日韩第一页| 色999韩欧美国产综合俺来也| 中文字幕一区二区三区最新| 国模大尺度一区二区三区| 久久久久久久久久网站| 欧美成人猛片aaaaaaa| av漫画网站在线观看| 女女同性女同一区二区三区91| 久久国产精品久久久久久电车| 日韩乱码人妻无码中文字幕久久| 色哟哟欧美精品| 青青影院在线观看| 3d蒂法精品啪啪一区二区免费| 国产精品videosex极品| 亚洲av无码一区二区三区观看| 色综合欧美在线视频区| 成人在线免费电影| 亚洲va电影大全| 亚洲国内欧美| 成熟人妻av无码专区| 91精品欧美福利在线观看| 少女频道在线观看高清| 精品卡一卡二| 六月丁香婷婷色狠狠久久| 永久看片925tv| 亚洲精品福利免费在线观看| 伊人久久高清| 日韩精品在线观看av| 久久久www免费人成精品| 国产丝袜在线视频| 国产91对白在线播放| 久久高清免费| 国产精品300页| 欧美日韩成人综合天天影院| 青春草免费在线视频| 婷婷精品国产一区二区三区日韩 | 国产免费拔擦拔擦8x在线播放| 日本在线观看一区二区三区| 国产精品18久久久久久久网站| 国内精品福利视频| 久久久精品免费视频| 特黄特色欧美大片| 在线观看视频你懂得| 在线一区二区三区| 白白色在线观看| 一本久久a久久精品vr综合 | 亚洲男人的天堂在线| 成人在线视频国产| 久久精品网站视频| 亚洲电影一级黄|