要部署應用程式到 Azure App Service 的方式有好幾種,其中我認為最簡單直接的就是把應用程式打包成 Zip 檔案後上傳,讓 Kudu 服務來幫忙處理我們上傳的 Zip 檔案,而且自從 curl 在 Windows 10 version 1803 內建之後,就讓這件事變得更容易了。
發佈到資料夾
無論我們的網頁應用程式是傳統的 ASP.NET,還是後來的 ASP.NET Core,我們都直接將應用程式「發佈到資料夾
」。
打包發佈的資料夾成 Zip 檔案
接著,我們使用 PowerShell 的 Compress-Archive 命令來把發佈資料夾中的內容,全部打包成 Zip 檔案。
Compress-Archive -Force -Path D:\Lab\MyNet8MvcWeb\MyNet8MvcWeb\bin\Release\net8.0\publish\* -DestinationPath publish.zip
如果路徑有空格則使用「單引號(')」括起來
Compress-Archive -Force -Path 'D:\My Lab\MyNet8MvcWeb\MyNet8MvcWeb\bin\Release\net8.0\publish\*' -DestinationPath publish.zip
上傳 Zip 檔案到 ZipDeploy API
每個 App Service 都有一個進階工具的網址,即 https://{Web 應用程式名稱}.scm.azurewebsites.net/
,而 ZipDeploy API 就是在進階工具的網址後面加上 /api/zipdeploy
。
再來,我們要取得上傳 Zip 檔案用的使用者帳號及密碼,它在 App Service 的「部署中心
」->「FTPS認證
」頁面裡面,其中的「FTPS 使用者名稱
」及「密碼
」就是了,而 FTPS 使用者名稱我們只需要後半部。
最後,使用 curl 命令發送 POST 要求將 Zip 檔案上傳到 ZipDeploy API。
curl -X POST -u '$mytest290611d5:{密碼}' -T 'publish.zip' -f https://mytest290611d5.scm.azurewebsites.net/api/zipdeploy
上傳 Zip URL 到 ZipDeploy API
如果我們的 Zip 檔案是放在網際網路上的 URL,我們可以改發送 PUT 要求將 Zip URL 更新到 ZipDeploy API。
curl -X PUT -u '$mytest290611d5:{密碼}' https://mytest290611d5.scm.azurewebsites.net/api/zipdeploy -H "Content-Type: application/json" -d "{'packageUri':'https://xxx.yyy.zzz/publish.zip'}"
最終,這些部署記錄,都可以在 App Service 的「部署中心
」->「記錄
」頁面查得到。
部署的方式百百種,簡單且直接的部署方式,經常會是開發者的首選。尤其是當只是要簡單驗證一下部署結果的時候,透過這種部署方式,我們可以輕鬆地將應用程式快速上線,無需複雜的設定或繁瑣的步驟,讓我們能節省一些時間。
參考資料
- Deploy files to App Service
- Deploying from a zip file or url
- What’s new for the Command Line in Windows 10 version 1803