簡體   English   中英

在Azure Service Fabric解決方案中通過Docker容器發布ASP.NET MVC項目

[英]Publish ASP.NET MVC Project via Docker Container in Azure Service Fabric solution

這是一個非常基本的問題。 微軟在各地宣傳這種提升和轉變的方法 ,這意味着您可以將舊的ASP.NET MVC項目(雲服務Webroles)移至Docker容器中,以便首先在Service Fabric(SF)上發布,然后再將其轉換為本機ASP.NET Core。

不幸的是,在任何地方都沒有完整的描述:

  • 第一個示例Lift and Shift :Microsoft的主要廣告,它將舊的Web項目放置到容器中。 但是他們只使用一些特殊的“ 連續交付 ”方法來發布,這無濟於事。
  • VS Docker Compose支持的方法 :僅介紹如何將單個容器發布為自包含應用程序。 但是它不允許將容器與其他服務一起嵌入到整個SF項目中。 而且,它不適用於在1中創建的Docker-Compose。1在我的機器上執行,可以發送到集群並以某種方式在集群上執行。 但是仍然無法從外部訪問webapp。
  • 教程如何將容器容器化並將其包含在SF解決方案中 :將容器包含在解決方案中的正確方向。 不幸的是,它們容器化的Web項目不是完整的ASP.NET Web項目。 它只是一個python腳本。 因此,在這種情況下,他們可以輕松創建docker文件。
  • Docker docs的ASP.Net Core Docker教程 :這里說明了如何創建比單個python腳本更復雜的容器。 但是,本教程仍然僅以ASP.NET Core項目為特色,並使用原始ASP.NET中不存在的“ dotnet publish”指令。
  • 不幸的是,用於將ASP.NET MVC應用程序從舊的Cloud Services遷移到SF的所有其他教程僅說明了如何立即升級到ASP.NET Core(例如, 此處此處 )。

我搞不清楚了。 我認為策略應該是編寫一個自己的docker文件並像4中那樣手動創建一個容器,然后按照3將這個容器嵌入SF解決方案中。 最后的問題是: 如何編寫Dockerfile來對ASP.NET MVC項目進行容器化?

首先回答最后一個問題:ASP.NET MVC的dockerfile示例:

FROM microsoft/aspnet:4.6.2
WORKDIR /inetpub/wwwroot
COPY /publish .

這會將Web Publish輸出從/ publish目錄復制到您的容器。

為了擴大您在上面放置的鏈接的位置,容器周圍有一些重要概念:

  • Docker文件(描述如何構建容器的文件)
  • Docker compose(一個可以描述如何構建和運行多個容器的文件)-單個容器不需要
  • Docker主機(在操作系統上運行的服務,可以拉出容器映像並運行它們)
  • 容器注冊表(當Docker主機需要運行它們時,將容器鏡像保存並從中獲取)
  • Visual Studio容器工具(可幫助您創建docker文件和docker組成文件並與docker主機集成以在本地調試和運行容器)
  • 您在上面的項目符號1中提到的CI集成(Visual Studio Team Services和Visual Studio幫助您配置如何構建容器並將其推送到容器注冊表)
  • Orchestrators(花哨的多節點內容,以類似多雲的方式運行容器。在解決方案中運行多個容器(又名節點集群-Service Fabric和Kubernetes)時,可為您提供可靠性和可擴展性)。

根據上面的四個項目符號,將以上內容視為:

  • 提升和轉移:這是一種簡單的端到端解決方案,可為您創建CI / CD管道。 包含以上所有內容。 這里有一個視頻,從上面的第一個鏈接開始,介紹了此場景: https : //channel9.msdn.com/events/Build/2017/T6001
  • VS Docker Compose支持的方法:上面的方法用於將docker compose文件手動推送到Service Fabric,該文件指示Service Fabric從容器注冊表中拉出並運行容器。
  • 教程如何容器化並將容器包含到SF解決方案:說明如何在不使用docker compose或Visual Studio的情況下實現此目的(這是您的選擇)
  • Docker文檔中的ASP.Net Core Docker教程:只是如何構建容器。

其他想要手動構建自動創建的dockerfile的人的一個旁注:

也會自動生成的.dockerignore file將忽略obj\\Docker文件夾以外的所有內容。 如果您手動發布並且您的發布文件夾不同,這就是盡管您在dockerfile中正確設置了引用但仍找不到引用的原因。

另一個提示:

在自己的群集上發布解決方案時,請注意,您必須在負載均衡器中手動設置轉發規則。 默認情況下,僅轉發端口19000和19080。 在任何教程中都沒有提及。 您只能以某種方式在深入的說明中找到添加平衡規則的信息。

暫無
暫無

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

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