如何使用華為云服務一鍵構(gòu)建部署發(fā)布前端和Node.js服務

來源:華為云社區(qū)
作者:Peter譚老師
時間:2020-08-19
3044
如何使用華為云服務一鍵構(gòu)建部署發(fā)布前端和Node.js服務構(gòu)建部署,一直是一個很繁瑣的過程作為開發(fā)。

如何使用華為云服務一鍵構(gòu)建部署發(fā)布前端和Node.js服務

1597670883621077598.png

構(gòu)建部署,一直是一個很繁瑣的過程

·作為開發(fā),最害怕遇到版本發(fā)布,特別是前、后端一起上線發(fā)布,項目又特別多的時候

·例如你有10個項目,前后端都要同時發(fā)布,那么就需要多次合并代碼、構(gòu)建,重復很多動作。而且還要去關心構(gòu)建機器環(huán)境是不是變了?配置是否能扛住同時構(gòu)建多個應用,人為的操作次數(shù)多了,就很難保證萬無一失

·那這種局面怎么破?是不是要考慮從技術(shù)角度來提效?假如我把所有的構(gòu)建、發(fā)布都遷移到云端,可以一鍵push代碼,然后自動完成構(gòu)建,我只要執(zhí)行一個命令就可以完成部署,又不需要關心機器配置和環(huán)境變化,那我們的工作效率是不是可以大大提升?

我之前的構(gòu)建發(fā)布流程

·之前我是使用Travis CIgitHub以及docker-compose結(jié)合進行一鍵代碼push構(gòu)建發(fā)布

·但是有一個很明顯的問題,gitHubTravis這兩個平臺是完全獨立的,特別是我代碼托管在gitHub上,有時候訪問速度還很慢,更要命的是沒有在一個平臺上形成完整的鏈路閉環(huán)

·于是我找了很多個平臺,最終發(fā)現(xiàn),華為云可以滿足我的需求,既可以代碼托管,也有可配置的自動化構(gòu)建流程,而且訪問速度快,純中文界面友好

新建項目&遷移到華為云

像我們前端和Node.js都是有一些腳手架,例如React這種框架,就有很多腳手架可以一鍵生成項目模板,讓你不再關心工程化配置的問題,華為云的developer模塊也提供了這個功能

1597670926003069422.png

·選擇想要的模板,像我選擇的是React+express模板,10秒鐘左右就生成好了,此時就可以在我的模板產(chǎn)物中看

1597670948548005861.png

·此時下載壓縮包,解壓運行以下命令即可開始開發(fā)

npm run install-all

npm run dev

·新建項目時候,我們可以選擇上面這種模式快速根據(jù)模版生成代碼,但是我今天是要把我的代碼從gitHub遷移到華為云上托管,然后在華為云上完成整個開發(fā)流程的閉環(huán)

將我gitHub倉庫代碼導入到華為云托管

1597670960798095146.png

·進入華為云devcloud模塊,輸入想要導入的gitHub倉庫地址和賬號密碼(如果需要),然后開始導入,大約耗時30S

·此時,在本地生成git ssh,將公鑰放置到華為云上

1597670973030025310.png

·我們此時可以點擊代碼倉庫,進去就可以看到倉庫詳情了(純中文界面,真的友好

1597670985642065963.png

·在本地使用以下命令即可完成clone和啟動

git clone remoteurl

cd your projectName

npm install

npm run dev

·以上完成了代碼遷移,目前我們代碼已經(jīng)托管到華為云上,為了完成整套研發(fā)環(huán)節(jié)的閉環(huán),我們需要將構(gòu)建、發(fā)布都遷移到華為云鯤鵬服務器

改變我的構(gòu)建策略

·我之前是基于gitHubTravis CIdocker-compose完成一鍵push代碼,然后一鍵完成發(fā)布,現(xiàn)在要在華為云上實現(xiàn)一套自動化構(gòu)建流程

構(gòu)建策略適配難度極低,遠超我的想象

·我的項目是一個前端基于React,后端基于Node.jsexpress框架,跟華為云的devstar的模板非常像

·如何設計這個任務流?

編寫任務流

·基于項目,新建編譯構(gòu)建任務

1597670997661055693.png

·編寫任務流任務流,所謂任務流,就是完成一個,然后接著下一個,華為云這里比較貼心,根據(jù)不同的環(huán)境進行了區(qū)分環(huán)境,不像傳統(tǒng)的服務器,你還要去裝docker、node.js等等這些(PS:任務新建后可以修改任務~)

1597671006537031411.png

·這里默認使用了華為的鏡像源倉庫,解決了因為環(huán)境配置問題導致下載慢的問題~

如何編寫任務流?

·以我的一個資料網(wǎng)站項目為例子,基于docker-compose發(fā)布,前后端都打包在一個鏡像中

·首先代碼push后,構(gòu)建任務不一定需要馬上執(zhí)行,而且我的推送次數(shù)可能很頻繁,此時我可以調(diào)成定時任務,還能限制次數(shù)(真的很貼心)

1597671022648013239.png

編寫dockerfile

·此時先編寫dockerfile文件,用于docker,基于Node.js 12.16.3版本的鏡像,指定端口

#引用鏡像

FROM node:12.16.3

#執(zhí)行命令,創(chuàng)建文件夾

RUN mkdir-p/usr/www

WORKDIR/usr/www

COPY./usr/www

RUN npm run build

#配置環(huán)境變量

ENV HOST 0.0.0.0

ENV PORT 8080

#定義程序默認端口

EXPOSE 8080

#運行程序命令

CMD["node","./server/index.js"]

·此時可以想象,我們推送代碼后(可以選擇什么分支),根據(jù)配置定時自動構(gòu)建,然后可以通過接口或者手動借助docker-compose命令進行一鍵更新發(fā)布

1597671033822052859.png

·簡單三個命令,完成docker-image的制作和push(具體參數(shù)可以參考提示)

1597671043284034890.png

·首先登陸docker,然后build打包鏡像,最后push即可完成構(gòu)建這一步,我們本地完全是無感知的~也不需要考慮配置和環(huán)境的問題

·此時我們手動觸發(fā)構(gòu)建任務(像我們公司項目特別大,一臺4核8G的機器可能就扛不住幾個項目同時構(gòu)建,在這里就不用擔心)

1597671054109083770.png

·等待一段時間后,發(fā)現(xiàn)命令執(zhí)行完成,docker鏡像已經(jīng)發(fā)布完成

1597671061497027452.png

發(fā)布

·兩種手段

  ·通過ssh連接華為云服務器,執(zhí)行編寫好的docker-compose文件

  ·通過接口帶token方式(有權(quán)限的人才可以發(fā)布)調(diào)用,執(zhí)行docker-compose命令,達到發(fā)布目的

·我們重點關注第一種,通過ssh連接到華為云鯤鵬服務器

1597671067549045282.png

·輸入用戶和ip地址后,ssh連接成功,編寫docker-compose文件

version: "3.7"

services:

    redis:

        image: redis:3

        container_name: redis

        hostname: redis

        command: redis-server /usr/local/etc/redis/redis.conf --requirepass huaweiapp666

        volumes:

          - ./redis/redis.conf:/usr/local/etc/redis/redis.conf

        ports:

          - "6379:6379"

    huaweiapp:

        image: jinjietan/huaweiapp:latest

        ports:

            - "8080:8080"

        restart: on-failure

·執(zhí)行命令,拉取鏡像

docker-compose pull

·拉取完成后,運行docker-compose

docker-compose up-d

·啟動成功,輸入域名,即可訪問到我的網(wǎng)站了,完成這個遷移和整套開發(fā)構(gòu)建流程的閉環(huán),僅僅用了1個小時不到

1597671100014082955.png

感受

·華為云從開發(fā)者角度出來,項目模板一鍵生成,定時構(gòu)建任務,任務流的定制化處理這些,非常人性化,大大降低了開發(fā)運維門檻,形成整套研發(fā)構(gòu)建流程的閉環(huán)

·我司也正在準備購買遷移華為云產(chǎn)品,所有托管、構(gòu)建發(fā)布都放在云端完成閉環(huán)

·相信你通過這篇文章,也可以快速的將你的代碼托管、構(gòu)建發(fā)布快速遷移到華為云鯤鵬服務器

原文鏈接:點擊前往 >
文章來源:華為云社區(qū)
版權(quán)說明:本文內(nèi)容來自于華為云社區(qū),本站不擁有所有權(quán),不承擔相關法律責任。文章內(nèi)容系作者個人觀點,不代表快出海對觀點贊同或支持。如有侵權(quán),請聯(lián)系管理員(zzx@kchuhai.com)刪除!
相關文章
HDC 2025耀星·領航出海高峰論壇:以全域生態(tài)協(xié)同重構(gòu)出海增長曲線
HDC 2025耀星·領航出海高峰論壇:以全域生態(tài)協(xié)同重構(gòu)出海增長曲線
6月21日,HDC 2025耀星·領航出海高峰論壇在東莞三丫坡舉辦,吸引了全球開發(fā)者、企業(yè)及生態(tài)出海專家共同參與。論壇聚焦2025年重點區(qū)域行業(yè)生態(tài)趨勢,通過歐洲、歐亞、中東、亞太、拉美等差異化市場的掘金案例,提供從獲量到變現(xiàn)的可持續(xù)發(fā)展新思路。
華為云
開發(fā)者
企業(yè)出海
2025-06-21
近6成金融機構(gòu)的選擇!華為云GaussDB加快金融核心系統(tǒng)轉(zhuǎn)型
近6成金融機構(gòu)的選擇!華為云GaussDB加快金融核心系統(tǒng)轉(zhuǎn)型
當前,數(shù)據(jù)庫在金融機構(gòu)的應用正在從辦公、一般系統(tǒng)逐步邁入核心系統(tǒng)應用的深水區(qū)。如何構(gòu)建安全可靠、高效穩(wěn)定的核心系統(tǒng)數(shù)據(jù)庫,支持業(yè)務運營和管理決策,成為了眾多金融機構(gòu)關注的焦點問題。
華為云
2024-07-04
華為云以系統(tǒng)性創(chuàng)新加速千行萬業(yè)智能化升級
華為云以系統(tǒng)性創(chuàng)新加速千行萬業(yè)智能化升級
華為云全球銷售收入達553億元人民幣,是全球增長最快的主流云廠商之一。
華為云
2024-04-22
華為云發(fā)布新型工業(yè)互聯(lián)網(wǎng)平臺參考架構(gòu)
華為云發(fā)布新型工業(yè)互聯(lián)網(wǎng)平臺參考架構(gòu)
近日,在華為分析師大會上,華為混合云副總裁胡玉海重磅發(fā)布《新型工業(yè)互聯(lián)網(wǎng)平臺參考架構(gòu)》白皮書,在傳統(tǒng)工業(yè)互聯(lián)網(wǎng)的基礎上,融入大模型的能力,讓智能化賦能新型工業(yè)化。
華為云
云服務
2024-04-22
個人VIP
小程序
快出海小程序
公眾號
快出海公眾號
商務合作
商務合作
投稿采訪
投稿采訪
出海管家
出海管家