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

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

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

1597670883621077598.png

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

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

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

·那這種局面怎么破?是不是要考慮從技術(shù)角度來提效?假如我把所有的構(gòu)建、發(fā)布都遷移到云端,可以一鍵push代碼,然后自動完成構(gòu)建,我只要執(zhí)行一個命令就可以完成部署,又不需要關(guān)心機器配置和環(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這種框架,就有很多腳手架可以一鍵生成項目模板,讓你不再關(guān)心工程化配置的問題,華為云的developer模塊也提供了這個功能

1597670926003069422.png

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

1597670948548005861.png

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

npm run install-all

npm run dev

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

將我gitHub倉庫代碼導(dǎo)入到華為云托管

1597670960798095146.png

·進入華為云devcloud模塊,輸入想要導(dǎo)入的gitHub倉庫地址和賬號密碼(如果需要),然后開始導(dǎo)入,大約耗時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ā)布都遷移到華為云鯤鵬服務(wù)器

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

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

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

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

·如何設(shè)計這個任務(wù)流?

編寫任務(wù)流

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

1597670997661055693.png

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

1597671006537031411.png

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

如何編寫任務(wù)流?

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

·首先代碼push后,構(gòu)建任務(wù)不一定需要馬上執(zhí)行,而且我的推送次數(shù)可能很頻繁,此時我可以調(diào)成定時任務(wù),還能限制次數(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)建任務(wù)(像我們公司項目特別大,一臺4核8G的機器可能就扛不住幾個項目同時構(gòu)建,在這里就不用擔(dān)心)

1597671054109083770.png

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

1597671061497027452.png

發(fā)布

·兩種手段

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

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

·我們重點關(guān)注第一種,通過ssh連接到華為云鯤鵬服務(wù)器

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)建任務(wù),任務(wù)流的定制化處理這些,非常人性化,大大降低了開發(fā)運維門檻,形成整套研發(fā)構(gòu)建流程的閉環(huán)

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

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

立即登錄,閱讀全文
原文鏈接:點擊前往 >
文章來源:華為云社區(qū)
版權(quán)說明:本文內(nèi)容來自于華為云社區(qū),本站不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。文章內(nèi)容系作者個人觀點,不代表快出海對觀點贊同或支持。如有侵權(quán),請聯(lián)系管理員(zzx@kchuhai.com)刪除!
相關(guān)文章
近6成金融機構(gòu)的選擇!華為云GaussDB加快金融核心系統(tǒng)轉(zhuǎn)型
近6成金融機構(gòu)的選擇!華為云GaussDB加快金融核心系統(tǒng)轉(zhuǎn)型
當(dāng)前,數(shù)據(jù)庫在金融機構(gòu)的應(yīng)用正在從辦公、一般系統(tǒng)逐步邁入核心系統(tǒng)應(yīng)用的深水區(qū)。如何構(gòu)建安全可靠、高效穩(wěn)定的核心系統(tǒng)數(shù)據(jù)庫,支持業(yè)務(wù)運營和管理決策,成為了眾多金融機構(gòu)關(guān)注的焦點問題。
華為云
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)的基礎(chǔ)上,融入大模型的能力,讓智能化賦能新型工業(yè)化。
華為云
云服務(wù)
2024-04-22
支撐核心系統(tǒng)分布式改造,GaussDB為江南農(nóng)商銀行筑穩(wěn)根基
支撐核心系統(tǒng)分布式改造,GaussDB為江南農(nóng)商銀行筑穩(wěn)根基
在移動互聯(lián)網(wǎng)快速普及的當(dāng)下,金融機構(gòu)能否提供便捷、智能、個性化的金融服務(wù),成為關(guān)乎業(yè)務(wù)開展和企業(yè)成長的重要命題。
華為云
2024-01-25
優(yōu)質(zhì)服務(wù)商推薦
更多