簡體   English   中英

部署到Azure App Service時遷移數據庫

[英]Migrate database when deploying to Azure App Service

我正在使用禁用了多租戶的ASP.NET BoilerplateASP.NET Core和Angular啟動模板:1個具有單個租戶的數據庫(默認)。

我還使用TeamCity來構建/測試/發布啟動模板中可用的項目,因此最終得到3個NuGet軟件包,這些軟件包已被推送到Octopus Deploy:

  1. API(宿主項目,ASP.NET Core Web應用程序)
  2. 遷移器(控制台應用程序,能夠遷移數據庫)
  3. UI(Angular應用)

我想使用2個App Services(主機和UI)和1個Azure SQL數據庫(主機)以以下方式將此設置通過Octopus Deploy(自行托管,v2018.9.0)部署到Azure。

  1. 使UI和API應用程序脫機,在更新項目時顯示友好的維護消息。
  2. 使用遷移程序包遷移數據庫
  3. 部署API應用程序包
  4. 部署UI應用程序包
  5. 將API應用程序置於在線狀態,也許還要進行一些測試以檢查其是否正常運行
  6. 將UI應用程序置於聯機狀態。

如果所有這些都是本地的,我將沒有問題。 我不知道這是Azure的一部分,因為我不知道如何通過Octopus Deploy在Azure上執行以下操作:

  1. 使Azure應用服務脫機/聯機(使用app_offline.htm文件)
  2. 將Migrator程序包部署到特殊文件夾中的API Azure應用服務中(這樣我就不會覆蓋API部署)並運行遷移器: dotnet [migrator.dll] -q

我嘗試使用Octopus Deploy“部署Azure Web App”,但是此步驟不會讓我也部署migrator程序包並在部署API程序包之前運行它。 還是呢? 我不知道

我嘗試使用“運行Azure PowerShell腳本”,但這是在Octopus Deploy服務器上執行的,而不是在Azure App Service環境上執行的,對嗎?

也許還有其他更好的方法將此設置部署到Azure?

您可以使用App服務插槽來換入/換出邏輯應用程序的版本。 交換時會發生預熱,並且不會丟失流量。

因此,基本上將其部署到備用插槽,然后將生產與備用插槽交換。

對於數據庫,我認為您的策略無效。 您要做出一些假設,但這並不會使您的生活變得輕松。 我會考慮單獨處理數據庫部署而沒有重大更改,但這是我的意見。

我不熟悉Octopus或TeamCity,因此我將不詳細介紹這些內容。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM