docker中編譯nodejs并使用nginx啟動(dòng)
1.編譯Nodejs
要進(jìn)行Nodejs編譯,使用docker就變得非常的方便了。
首先從hub.docker.com下載最新的鏡像。https://hub.docker.com/_/node/

一般的項(xiàng)目都使用的是node6的鏡像。
docker pull node:6-alpine
然后就可以直接使用npm install了。
Alpine是一個(gè)非常小的操作系統(tǒng),在編譯,運(yùn)行docker非常喜歡使用這個(gè)系統(tǒng),因?yàn)樾?,占用磁盤小,下載速度快,部署也快。
節(jié)省磁盤空間,節(jié)省部署時(shí)間。
2.使用docker鏡像提前下載庫(kù)
但是遇到一個(gè)問(wèn)題,就是下載編譯的時(shí)間太長(zhǎng)了。
一般使用nodejs進(jìn)行開發(fā)的時(shí)候都有一個(gè)package.json 里面具體的項(xiàng)目依賴 包,下載這個(gè)依賴需要很長(zhǎng)時(shí)間。一般使用阿里云的鏡像安裝。
npm install --registry=https://registry.npm.taobao.org
而在使用docker 進(jìn)行構(gòu)建,編譯的時(shí)候每次都是要下載這些依賴。大大增加了編譯的時(shí)間。
FROM docker.io/library/node:6-alpine RUN echo -e "http://mirrors.aliyun.com/alpine/v3.4/main\n\ http://mirrors.aliyun.com/alpine/v3.4/community" > /etc/apk/repositories COPY package.json /root/ RUN cd /root && npm install --registry=https://registry.npm.taobao.org
可以提前將鏡像下載好,然后在編譯。做一個(gè)基礎(chǔ)的鏡像。如下:
構(gòu)建這個(gè)基礎(chǔ)鏡像:
docker build -t my-demo/node6-alpine:latest .
在利用這個(gè)鏡像進(jìn)行編譯:
#!/bin/sh mkdir /app && cd /app git clone xxx.git /app ln -s /root/.gnupg /app/.gnupg ln -s /root/.npm /app/.npm ln -s /root/node_modules /app/node_modules npm install --registry=https://registry.npm.taobao.org npm run build build.sh
然后利用這個(gè)基礎(chǔ)鏡像進(jìn)行編譯,生氣了之前的instal 過(guò)程。
期中的node_modules是node的模塊文件夾。編譯后的文件在dist文件夾內(nèi)。
3.使用nginx啟動(dòng)
首先從https://hub.docker.com/_/nginx/ 下載一個(gè)鏡像:

FROM docker.io/library/nginx:1-alpine ADD ./dist/* /usr/share/nginx/html/ EXPOSE 80 ENTRYPOINT ["nginx","-g","daemon off;"]
使用nginx鏡像啟動(dòng),直接將node編譯后的文件放到html目錄
編譯docker :
docker build -t my-demo/nginx:latest .
啟動(dòng)docker:
docker run -itd -p 8080:80 my-demo/nginx:latest
然后直接訪問(wèn) 8080 端口就可以了。
總結(jié):
(首發(fā),請(qǐng)勿轉(zhuǎn)載。)
現(xiàn)在前后端的拆分,可以提高開發(fā)效率。但是部署起來(lái)稍微麻煩,需要前后的分別進(jìn)行編譯,前端編譯也需要很長(zhǎng)時(shí)間??梢蕴崆皩⒁蕾噹?kù)大成一個(gè)node基礎(chǔ)鏡像,然后再進(jìn)行編譯,這樣可以大大的提高編譯時(shí)間。同時(shí)運(yùn)行環(huán)境使用一個(gè)nginx,將html,css,js等資源文件都放上,也才20多MB。而且在nginx中也可以將后臺(tái)api在進(jìn)行配置,將前后端集成進(jìn)來(lái)。同時(shí)docker的鏡像大大的提高了開發(fā)效率,環(huán)境的安裝問(wèn)題一下子得到了解決。
相關(guān)文章
如何刪除所有node_modules和package-lock配置文件
這篇文章主要介紹了如何刪除所有node_modules和package-lock配置文件問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-02-02
Node.js dgram模塊實(shí)現(xiàn)UDP通信示例代碼
這篇文章主要介紹了Node.js dgram模塊實(shí)現(xiàn)UDP通信示例代碼,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-09-09
Node.js API詳解之 tty功能與用法實(shí)例分析
這篇文章主要介紹了Node.js API詳解之 tty功能與用法,結(jié)合實(shí)例形式分析了Node.js API中tty的基本功能、用法及終端操作相關(guān)使用技巧,需要的朋友可以參考下2020-04-04
Node.js?連接?MySql?統(tǒng)計(jì)組件屬性的使用情況解析
這篇文章主要為大家介紹了Node.js?連接?MySql?統(tǒng)計(jì)組件屬性的使用情況解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-10-10
Node.js前后端交互實(shí)現(xiàn)用戶登陸的實(shí)踐
本文主要介紹了Node.js前后端交互實(shí)現(xiàn)用戶登陸的實(shí)踐,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-12-12
node.js調(diào)用腳本(python/shell)和系統(tǒng)命令
這篇文章介紹了node.js調(diào)用腳本(python/shell)和系統(tǒng)命令的方法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-07-07
node.js操作mongodb學(xué)習(xí)小結(jié)
這篇文章主要介紹了node.js操作mongodb學(xué)習(xí)小結(jié),本文給出了mongodb創(chuàng)建數(shù)據(jù)庫(kù)、插入數(shù)據(jù)以及連接mongodb數(shù)據(jù)庫(kù)并查詢數(shù)據(jù)等代碼實(shí)例,需要的朋友可以參考下2015-04-04
node+express+ejs制作簡(jiǎn)單頁(yè)面上手指南
本文記錄了使用node+express+ejs制作簡(jiǎn)單頁(yè)面的全過(guò)程,話說(shuō)express+ejs真的是太難了,有種蛋蛋的憂傷~2014-11-11
Node.js與MySQL交互操作及其注意事項(xiàng)
這篇文章給大家主要介紹了Node.js與MySQL交互操作及其注意事項(xiàng),非常的詳細(xì),有相同需求的小伙伴可以參考下2016-10-10
nodejs個(gè)人博客開發(fā)第四步 數(shù)據(jù)模型
這篇文章主要為大家詳細(xì)介紹了nodejs個(gè)人博客開發(fā)的數(shù)據(jù)模型,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-04-04

