
首先介紹下在本文出現的幾個比較重要的概念:
函數計算(Function Compute): 函數計算是一個事件驅動的服務,通過函數計算,使用者無需管理伺服器等運作情況,隻需編寫代碼并上傳。函數計算準備計算資源,并以彈性伸縮的方式運作使用者代碼,而使用者隻需根據實際代碼運作所消耗的資源進行付費。函數計算更多資訊 參考。
Fun: Fun 是一個用于支援 Serverless 應用部署的工具,能幫助您便捷地管理函數計算、API 網關、日志服務等資源。它通過一個資源配置檔案(template.yml),協助您進行開發、建構、部署操作。Fun 的更多文檔
備注: 本文介紹的技巧需要 Fun 版本大于等于 3.6.3。
背景資訊
Express是一個基于 Node.js 平台的極簡、靈活的 Web 應用開發架構,它提供一系列強大的特征,幫助你建立各種 Web 和移動裝置應用。
步驟一:準備環境
本文介紹的方法,不需要安裝 Docker,僅僅安裝 Fun 即可,最簡單的方式就是直接下載下傳可執行的二進制檔案。
- 安裝 Fun 到本機。詳情請參見 安裝文檔
- 執行
檢查安裝是否成功。fun --version
步驟二:遷移應用
- 執行以下指令建立一個 Express 項目,詳情請參見 Express application generator ,或者您可以按照官方描述的步驟建立簡單的 Hello world example ,若有 Express 項目則跳過該步驟。
npx express-generator
- 執行以下指令進入剛建立的示例項目中或您的項目中。
cd <project-name>
- 執行以下指令依賴安裝。
npm install
- 執行以下指令運作項目。
- MacOS、Linux 平台運作項目:
DEBUG=myapp:* npm start
- windows 平台運作項目:
set DEBUG=myapp:* & npm start
- MacOS、Linux 平台運作項目:
- 執行指令
fun deploy -y
将項目部署至函數計算。
Fun 會自動進入部署流程。
$fun deploy -y current folder is not a fun project. Generating /Users/txd123/Desktop/Express/bootstrap... Generating template.yml... Generate Fun project successfully! ========= Fun will use 'fun deploy' to deploy your application to Function Compute! ========= using region: cn-qingdao using accountId: ***********3743 using accessKeyId: ***********Ptgk using timeout: 60 Collecting your services information, in order to caculate devlopment changes... Resources Changes(Beta version! Only FC resources changes will be displayed): ... ... ... ... trigger httpTrigger deploy success function Express deploy success service Express deploy success Detect 'DomainName:Auto' of custom domain 'Domain' Request a new temporary domain ... The assigned temporary domain is 15795585-XXX.test.functioncompute.com,expired at 2020-04-12 10:46:25, limited by 1000 per day. Waiting for custom domain Domain to be deployed... custom domain Domain deploy success
部署完成後,您可以根據部署成功的日志看到,函數計算為您生成了臨時域名 ,您通過這個臨時域名直接通路剛剛部署的應用。
注意:臨時域名僅僅用作示範以及開發,具有時效性,如需用作生産,請綁定已經在阿裡雲備案的域名,詳情請參見
綁定自定義域名
總結
本文介紹如何将 Express 應用部署到函數計算。與傳統的部署方法相比,您可将傳統的 Express 應用一鍵部署至遠端直接用于生産。跳過購買機器等步驟的同時,還擁有了彈性伸縮、按量付費和免運維等特性。
“ 阿裡巴巴雲原生 關注微服務、Serverless、容器、Service Mesh 等技術領域、聚焦雲原生流行技術趨勢、雲原生大規模的落地實踐,做最懂雲原生開發者的技術圈。”