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

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

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

1597670883621077598.png

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

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

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

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

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

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

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

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

新建項(xiàng)目&遷移到華為云

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

1597670926003069422.png

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

1597670948548005861.png

·此時(shí)下載壓縮包,解壓運(yùn)行以下命令即可開(kāi)始開(kāi)發(fā)

npm run install-all

npm run dev

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

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

1597670960798095146.png

·進(jìn)入華為云devcloud模塊,輸入想要導(dǎo)入的gitHub倉(cāng)庫(kù)地址和賬號(hào)密碼(如果需要),然后開(kāi)始導(dǎo)入,大約耗時(shí)30S

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

1597670973030025310.png

·我們此時(shí)可以點(diǎn)擊代碼倉(cāng)庫(kù),進(jìn)去就可以看到倉(cāng)庫(kù)詳情了(純中文界面,真的友好

1597670985642065963.png

·在本地使用以下命令即可完成clone和啟動(dòng)

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)在要在華為云上實(shí)現(xiàn)一套自動(dòng)化構(gòu)建流程

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

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

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

編寫(xiě)任務(wù)流

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

1597670997661055693.png

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

1597671006537031411.png

·這里默認(rèn)使用了華為的鏡像源倉(cāng)庫(kù),解決了因?yàn)榄h(huán)境配置問(wèn)題導(dǎo)致下載慢的問(wèn)題~

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

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

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

1597671022648013239.png

編寫(xiě)dockerfile

·此時(shí)先編寫(xiě)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

#定義程序默認(rèn)端口

EXPOSE 8080

#運(yùn)行程序命令

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

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

1597671033822052859.png

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

1597671043284034890.png

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

·此時(shí)我們手動(dòng)觸發(fā)構(gòu)建任務(wù)(像我們公司項(xiàng)目特別大,一臺(tái)4核8G的機(jī)器可能就扛不住幾個(gè)項(xiàng)目同時(shí)構(gòu)建,在這里就不用擔(dān)心)

1597671054109083770.png

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

1597671061497027452.png

發(fā)布

·兩種手段

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

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

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

1597671067549045282.png

·輸入用戶和ip地址后,ssh連接成功,編寫(xiě)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

·拉取完成后,運(yùn)行docker-compose

docker-compose up-d

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

1597671100014082955.png

感受

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

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

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

立即登錄,閱讀全文
原文鏈接:點(diǎn)擊前往 >
文章來(lái)源:華為云社區(qū)
版權(quán)說(shuō)明:本文內(nèi)容來(lái)自于華為云社區(qū),本站不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。文章內(nèi)容系作者個(gè)人觀點(diǎn),不代表快出海對(duì)觀點(diǎn)贊同或支持。如有侵權(quán),請(qǐng)聯(lián)系管理員(zzx@kchuhai.com)刪除!
相關(guān)文章
近6成金融機(jī)構(gòu)的選擇!華為云GaussDB加快金融核心系統(tǒng)轉(zhuǎn)型
近6成金融機(jī)構(gòu)的選擇!華為云GaussDB加快金融核心系統(tǒng)轉(zhuǎn)型
當(dāng)前,數(shù)據(jù)庫(kù)在金融機(jī)構(gòu)的應(yīng)用正在從辦公、一般系統(tǒng)逐步邁入核心系統(tǒng)應(yīng)用的深水區(qū)。如何構(gòu)建安全可靠、高效穩(wěn)定的核心系統(tǒng)數(shù)據(jù)庫(kù),支持業(yè)務(wù)運(yùn)營(yíng)和管理決策,成為了眾多金融機(jī)構(gòu)關(guān)注的焦點(diǎn)問(wèn)題。
華為云
2024-07-04
華為云以系統(tǒng)性創(chuàng)新加速千行萬(wàn)業(yè)智能化升級(jí)
華為云以系統(tǒng)性創(chuàng)新加速千行萬(wàn)業(yè)智能化升級(jí)
華為云全球銷售收入達(dá)553億元人民幣,是全球增長(zhǎng)最快的主流云廠商之一。
華為云
2024-04-22
華為云發(fā)布新型工業(yè)互聯(lián)網(wǎng)平臺(tái)參考架構(gòu)
華為云發(fā)布新型工業(yè)互聯(lián)網(wǎng)平臺(tái)參考架構(gòu)
近日,在華為分析師大會(huì)上,華為混合云副總裁胡玉海重磅發(fā)布《新型工業(yè)互聯(lián)網(wǎng)平臺(tái)參考架構(gòu)》白皮書(shū),在傳統(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)根基
在移動(dòng)互聯(lián)網(wǎng)快速普及的當(dāng)下,金融機(jī)構(gòu)能否提供便捷、智能、個(gè)性化的金融服務(wù),成為關(guān)乎業(yè)務(wù)開(kāi)展和企業(yè)成長(zhǎng)的重要命題。
華為云
2024-01-25
優(yōu)質(zhì)服務(wù)商推薦
更多
掃碼登錄
打開(kāi)掃一掃, 關(guān)注公眾號(hào)后即可登錄/注冊(cè)
加載中
二維碼已失效 請(qǐng)重試
刷新
賬號(hào)登錄/注冊(cè)
個(gè)人VIP
小程序
快出海小程序
公眾號(hào)
快出海公眾號(hào)
商務(wù)合作
商務(wù)合作
投稿采訪
投稿采訪
出海管家
出海管家