首页 > 解决方案 > Dockerfile 中 .NET 5 的次要/补丁版本是否有自动前滚功能

问题描述

在本地启动 .NET 5 项目时,会自动前滚,这意味着在启动项目时,运行时将选择系统上安装的最新次要/补丁版本。

为了部署到生产,我使用带有典型 Dockerfile 的 docker

FROM mcr.microsoft.com/dotnet/sdk:5.0

FROM mcr.microsoft.com/dotnet/aspnet:5.0

在运行 docker 映像的服务器上键入“dotnet --info”时,我总是得到版本“5.0.0”。

我想知道每次发布新版本时是否必须在 Dockerfile 中手动输入正确的次要/补丁版本,或者是否有版本说明符来安装这些小版本并自动前滚。

标签: dockerdockerfile.net-5

解决方案


mcr.microsoft.com/dotnet/sdk:5.0是一个浮动标签。它总是指该major.minor 版本中的最新补丁

该标签已更新为始终引用当前可用于 Major.Minor 版本的最新补丁。

例如,如果您今天检查 docker 映像,您应该会看到这是一个 5.0.102 SDK 和 5.0.2 运行时映像:

$ podman inspect mcr.microsoft.com/dotnet/sdk:5.0 --format='json' | jq '.[0].Config.Env'
[
  "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
  "ASPNETCORE_URLS=",
  "DOTNET_RUNNING_IN_CONTAINER=true",
  "DOTNET_VERSION=5.0.2",
  "ASPNET_VERSION=5.0.2",
  "DOTNET_SDK_VERSION=5.0.102",
  "DOTNET_USE_POLLING_FILE_WATCHER=true",
  "NUGET_XMLDOC_MODE=skip",
  "POWERSHELL_DISTRIBUTION_CHANNEL=PSDocker-DotnetSDK-Debian-10"
]

如果您看到它仍在5.0.0您的服务器上,则您可能使用的是较旧的容器。默认情况下docker run,将运行上次拉取的图像,而不检查更新。

您可能需要docker pull显式更新映像,或使用docker run --pull=always以确保您正在运行最新的容器映像。


推荐阅读