.NET 7 SDK 開始 支援構建容器化應用程式

微軟於 8 月 25 日在.NET官方部落格上,.NET 7 SDK 將包括對創建容器化應用程式的支援,作為構建發布過程的一部分,從而繞過需要。顯式 Docker 構建階段。 這一決定背後的基本認知是簡化樣板 Docker file的編寫並減少開發人員的認知負擔,從而可以比以前更快地在 .NET 中構建容器化應用程式。開發人員可以在本地開發中使用生成的容器,或者利用它作為 CI/CD 管道的一部分來構建鏡像。到目前為止,開發者社區的反應是謹慎積極的。

image

Microsoft 的.NET SDK 產品經理Chet Husk 在文章中解釋說,為了構建此功能,他們必須添加對直接在 .NET中處理 TAR 文件的支援, 這個功能在.NET 7 Preview 4完成。 它允許我們在通常的 .NET 構建過程中更改和更新 Docker 映像文件,這些文件根據Open Container Initiative 規範打包為 TAR 文件。構建 .NET 應用程式的容器映像所需的所有資訊在構建時已經存在,並且 .NET SDK 已擴展為包含用 C# 編寫的容器映像構建過程。

一個 容器鏡像可以有很多配置設置。在 .NET SDK 映像構建過程中,這些配置作為項目級別的屬性公開。例如,ASP.NET Core 項目具有來自 Azure 容器註冊表的默認基礎容器映像。如果要將其更改為不同的基礎鏡像,則必須更改項目文件中的屬性ContainerBaseImage 並將其指向新鏡像。構建過程還將項目的程式集名稱作為鏡像名稱,也可以使用項目屬性ContainerImageName覆蓋。

一個主要限制是不支援Dockerfile RUN 命令。  Chet Husk 是這麼說:沒有辦法使用 .NET SDK 執行 RUN 命令。Dockerfile RUN 命令使您能夠通過在正在構建的映像上運行作業系統命令來構建中間映像,通常用於安裝工具或更改系統配置。作為一種解決方法,Microsoft 建議使用 Docker 使用 RUN 命令構建基礎鏡像,然後在使用 .NET SDK 構建容器時將該鏡像指定為基礎鏡像。

當前功能目前僅支援 Linux 鏡像。微軟在 GitHub 的項目里程碑中表示,Windows 鏡像和容器註冊表身份驗證將在 .NET 7 發布之前解決,以及其他鏡像的訂製可能性。