docker中編譯nodejs并使用nginx啟動
1.編譯Nodejs
要進行Nodejs編譯,使用docker就變得非常的方便了。
首先從hub.docker.com下載最新的鏡像。https://hub.docker.com/_/node/
一般的項目都使用的是node6的鏡像。
docker pull node:6-alpine
然后就可以直接使用npm install了。
Alpine是一個非常小的操作系統(tǒng),在編譯,運行docker非常喜歡使用這個系統(tǒng),因為小,占用磁盤小,下載速度快,部署也快。
節(jié)省磁盤空間,節(jié)省部署時間。
2.使用docker鏡像提前下載庫
但是遇到一個問題,就是下載編譯的時間太長了。
一般使用nodejs進行開發(fā)的時候都有一個package.json 里面具體的項目依賴 包,下載這個依賴需要很長時間。一般使用阿里云的鏡像安裝。
npm install --registry=https://registry.npm.taobao.org
而在使用docker 進行構(gòu)建,編譯的時候每次都是要下載這些依賴。大大增加了編譯的時間。
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
可以提前將鏡像下載好,然后在編譯。做一個基礎(chǔ)的鏡像。如下:
構(gòu)建這個基礎(chǔ)鏡像:
docker build -t my-demo/node6-alpine:latest .
在利用這個鏡像進行編譯:
#!/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
然后利用這個基礎(chǔ)鏡像進行編譯,生氣了之前的instal 過程。
期中的node_modules是node的模塊文件夾。編譯后的文件在dist文件夾內(nèi)。
3.使用nginx啟動
首先從https://hub.docker.com/_/nginx/ 下載一個鏡像:
FROM docker.io/library/nginx:1-alpine ADD ./dist/* /usr/share/nginx/html/ EXPOSE 80 ENTRYPOINT ["nginx","-g","daemon off;"]
使用nginx鏡像啟動,直接將node編譯后的文件放到html目錄
編譯docker :
docker build -t my-demo/nginx:latest
.
啟動docker:
docker run -itd -p 8080:80 my-demo/nginx:latest
然后直接訪問 8080 端口就可以了。
總結(jié):
(首發(fā),請勿轉(zhuǎn)載。)
現(xiàn)在前后端的拆分,可以提高開發(fā)效率。但是部署起來稍微麻煩,需要前后的分別進行編譯,前端編譯也需要很長時間??梢蕴崆皩⒁蕾噹齑蟪梢粋€node基礎(chǔ)鏡像,然后再進行編譯,這樣可以大大的提高編譯時間。同時運行環(huán)境使用一個nginx,將html,css,js等資源文件都放上,也才20多MB。而且在nginx中也可以將后臺api在進行配置,將前后端集成進來。同時docker的鏡像大大的提高了開發(fā)效率,環(huán)境的安裝問題一下子得到了解決。
相關(guān)文章
node.js中process進程的概念和child_process子進程模塊的使用方法示例
這篇文章主要介紹了node.js中process進程的概念和child_process子進程模塊的使用方法,結(jié)合實例形式分析了node.js中process進程和child_process子進程模塊相關(guān)概念、原理、使用方法及操作注意事項,需要的朋友可以參考下2020-02-02nodejs實現(xiàn)截取上傳視頻中一幀作為預(yù)覽圖片
這篇文章主要為大家詳細介紹了nodejs實現(xiàn)截取上傳視頻中一幀作為預(yù)覽圖片,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-12-12npm?ERR!Cannot?read?properties?of?null(reading?'p
這篇文章主要給大家介紹了關(guān)于npm?ERR!Cannot?read?properties?of?null(reading?'pickAlgorithm')報錯問題的解決方法,文中通過圖文介紹的非常詳細,需要的朋友可以參考下2023-03-03使用Nodejs連接mongodb數(shù)據(jù)庫的實現(xiàn)代碼
這篇文章主要介紹了使用Nodejs連接mongodb數(shù)據(jù)庫的實現(xiàn)代碼,需要的朋友可以參考下2017-08-08Node.js 多進程處理CPU密集任務(wù)的實現(xiàn)
這篇文章主要介紹了Node.js 多進程處理CPU密集任務(wù)的實現(xiàn),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2019-05-05