微软宣布了对 .NET SDK 的内置容器支持。公告指出,容器已经成为在云中分发和运行广泛的应用程序和服务的最简单方法之一。几年前,.NET 运行时就已经针对容器进行了强化。现在,开发人员则可以通过使用 dotnet publish 创建应用程序的容器化版本。“容器镜像现在是 .NET SDK 支持的一种输出类型”。
在目前的初始预览阶段,微软方面主要专注于 Linux-x64 镜像的部署方案;Windows 镜像和其他架构的支持尚在计划当中。
当然,预览阶段也尚有一些功能欠缺。微软表示,其还未实现对身份验证的支持;这一支持对许多用户来说至关重要,也是他们最高优先级的项目之一。在此期间,微软建议开发人员可以推送到他们本地的 Docker 守护进程,然后使用docker tag
和docker 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 库并使用一个命令将它们容器化,我希望你们都有同样的感受。”
(文/开源中国)