跳過到頁腳內容
Iron Academy Logo
學習 C#
學習 C#

其他分類

輕松使用 .NET CLI 將 C# 應用程式容器化

Tim Corey
9分鐘57秒

容器是一個強大的工具,但對於許多開發者來說,將C#應用程式放入容器的想法可能會讓人感到不知所措。 手動設置Dockerfile和處理相依性可能很複雜。 然而,正如Tim Corey在他的视频中解释的那样,.NET CLI简化了这一过程,使开发者无需Dockerfile就能将他们的应用程式容器化。

在本文中,我们将深入探讨使用Tim在其视频中提到的分步方法来容器化C#应用程式,"使用.NET CLI輕鬆容器化您的C#應用程式。"遵循Tim的指導,我們將了解如何將.NET應用程式輕鬆發布到Docker容器中。

容器的.NET CLI介紹

在视频的开头,Tim解释了容器化的需求。 他强调整个容器是一个很棒的工具,但设置Dockerfile并正确配置的过程可能很复杂。

Tim介紹了一種使用.NET CLI的更简单的方法,而不是手動創建Dockerfile。 這種方法使開發人員可以在不手動編寫Dockerfile的情況下創建容器化應用程式。

Tim還說明這個影片是他10分鐘訓練系列的一部分,該系列專注於快速且有效的技術主題介紹。

應用程式設置

Tim開始以一個最小的Web API應用程式作為範例。 應用程式包含一個稱為/messages的單一端點,會返回一些資料。

為了展示應用程式在容器化之前的行為,Tim在本地執行它。 透過存取/messages端點,他確認它在容器外部正確運行。

在進行容器化之前,他還檢查以下事項:

  • Docker已安裝並在他的計算機上運行。
  • 起初沒有現有的Docker影像或容器。

這確保當創建新容器時,我們可以清楚地看到變更。

準備容器化

為了將應用程式容器化,Tim在專案目錄內進入命令行。 然後運行以下命令:

dotnet publish -o:Linux -a:x64 -p:PublishProfile=DefaultContainer -c:Release

Tim分解命令的各個部分:

  • -o:Linux → 為基於Linux的容器發布應用程式。
  • -a:x64 → 指定架構為64位。
  • -p:PublishProfile=DefaultContainer → 使用默認的容器設定。
  • -c:Release → 在發布模式下發布應用程式以提高性能。

Tim強調,Linux容器更優於Windows容器,因為Windows容器主要作為.NET Framework應用程式的橋樑。

發布及創建容器

一旦執行發布命令,Tim解释了.NET CLI會自动确定必要的配置,并将所有内容打包到容器中。 他指出:

  • 此方法無需Dockerfile。
  • 該過程在一個步驟中構建應用程式並將其容器化。
  • 使用的基礎影像是Microsoft的.NET 8運行時容器。

發布後,他檢查了Docker Desktop,並確認新建的容器影像background-demo已經創建。 初始容器的大小是221 MB。

Tim向觀眾保證,這個大小可以稍後減小。

運行容器

為了測試容器化的應用程式,Tim直接從Docker Desktop啟動容器。由於尚無運行中的容器,他點擊"運行"並設定可選的設置:

  • 他將容器的內部端口(隨機分配)映射到主機機器的8080端口。

啟動後,他使用網絡瀏覽器訪問應用程式。 起初,訪問根URL會給出404錯誤,但導航到/messages成功顯示預期的資料。

Tim強調了一個重要點:

  • 應用程式在容器內運行的時間是UTC,可能與本地機的時區不同。

他還指出,由於應用程式是以發布模式發布的,因此預設禁用了Swagger UI。

優化容器大小

此時,預設的容器大小為221 MB,Tim承認這相當大。 為了減小尺寸,他介紹了一個更輕的基礎影像。

通過修改jammy-chiseled,一個較小的基於Ubuntu的影像:

builder.Services.Configure<ContainerOptions>(options => options.ContainerFamily = "jammy-chiseled");
builder.Services.Configure<ContainerOptions>(options => options.ContainerFamily = "jammy-chiseled");

然後他重新運行發布命令,並在重建容器後再檢查影像大小。

新的影像大小是113 MB—減少了大約100 MB! 雖然尺寸較小,但應用程式的功能相同。

刪除並重建容器

Tim展示了刪除容器以清理工作空間。 然而,Docker影像仍然可用,所以如果需要,可以重新創建容器。

他強調,一旦建好了容器,就可以:

  • 在本地運行以開發和測試。
  • 推送到像Docker Hub或Azure Container Registry這樣的容器註冊表。
  • 作為雲部署Web應用程式的基礎。

結論及最終想法

Tim透過強調使用.NET CLI進行容器化的關鍵優勢來結束影片:

  1. 無需Dockerfile – .NET CLI會自動處理所有事項。
  2. 快速簡便的過程 – 僅需一個命令,一個應用程式就可以被容器化。
  3. 更小、更優化的影像 – 使用jammy-chiseled減少容器大小。
  4. 無縫部署 – 容器可以推送到各種雲端服務中。

最終想法

Tim的方法透過.NET CLI來容器化C#應用程式簡單、快速且有效。通過遵循他的方式,開發人員可以創建和優化容器,而不需需具備廣泛的Docker知識。

通過利用Linux容器、優化的基礎影像和精簡的發布命令,此技術讓開發人員可以以最小的努力高效地容器化其應用程式。

如果您想更深入了解,請務必查看Tim Corey的影片。 它提供了整個過程的清晰分步教程。

Hero Worlddot related to 輕松使用 .NET CLI 將 C# 應用程式容器化
Hero Affiliate related to 輕松使用 .NET CLI 將 C# 應用程式容器化

通過分享您所愛的東西賺得更多

您是否在為使用.NET、C#、Java、Python或Node.js的開發者創建內容?將您的專業知識轉化為額外收入!

鋼鐵支援團隊

我們每週 5 天,每天 24 小時在線上。
聊天
電子郵件
打電話給我