微軟宣佈對 .NET SDK 的內置容器支持

語言: CN / TW / HK

微軟宣佈了對 .NET SDK 的內置容器支持。公告指出, 容器已經成為在雲中分發和運行廣泛的應用程序和服務的最簡單方法之一。幾年前,.NET 運行時就已經針對容器進行了強化。現在,開發人員則可以通過使用 dotnet  publish 創建應用程序的容器化版本。“容器鏡像現在是 .NET SDK 支持的一種輸出類型”。

在目前的初始預覽階段,微軟方面主要專注於 Linux-x64 鏡像的部署方案;Windows 鏡像和其他架構的支持尚在計劃當中。

當然,預覽階段也尚有一些功能欠缺。微軟表示,其還未實現對身份驗證的支持;這一支持對許多用户來説至關重要,也是他們最高優先級的項目之一。在此期間,微軟建議開發人員可以推送到他們本地的 Docker 守護進程,然後使用 docker tagdocker push 推送生成的鏡像到計劃的目的地。

name: Containerize ASP.NET Core application

on: [push]

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - name: Setup .NET SDK
        uses: actions/setup-dotnet@v2
      # Package the app into a linux-x64 container based on the dotnet/aspnet image
      - name: Publish
        run: dotnet publish --os linux --arch x64 --configuration Release -p:PublishProfile=DefaultContainer
      # Because we don't yet support pushing to authenticated registries, we have to use docker to
      # login, tag and push the image. In the future none of these steps will be required!
      # 1. Login to our registry so we can push the image. Could use a raw docker command as well.
      - name: Docker Login
        uses: actions-hub/docker/login@master
        env:
          DOCKER_REGISTRY_URL: sdkcontainerdemo.azurecr.io
          DOCKER_USERNAME: ${{ secrets.ACR_USERNAME }}
          DOCKER_PASSWORD: ${{ secrets.ACR_PAT }}
      # 2. Use the tag command to rename the local container to match our Azure Container Registry URL
      - name: Tag built container with Azure Container Registry url
        uses: actions-hub/docker/cli@master
        with:
          args: tag sdk-container-demo:1.0.0 sdkcontainerdemo.azurecr.io/baronfel/sdk-container-demo:latest
      # 3. Push the renamed container to ACR.
      - name: Push built container to Azure Container Registry
        uses: actions-hub/docker/cli@master
        with:
          args: push sdkcontainerdemo.azurecr.io/baronfel/sdk-container-demo:latest

接下來,.NET 7 軟件開發平台的候選版本將添加新的鏡像元數據,支持將鏡像推送到遠程註冊表,並支持 Windows 鏡像。.NET 7 預計將於 11 月作為生產版本發佈。

“我們還計劃在整個發佈過程中將這項工作直接集成到 SDK 中。到那時,我們將在 NuGet 上發佈包的 final 版本,它將警告你這個變化,並要求你從項目中完全刪除該軟件包...... 我們希望那些構建 Linux 容器的人嘗試使用 .NET SDK 構建它們。我個人在本地嘗試了一下 —— 我很開心地訪問了我的一些 demo 庫並使用一個命令將它們容器化,我希望你們都有同樣的感受。