我有具有多目标的依赖项目:
<TargetFrameworks>net8.0;net7.0;net6.0;net48</TargetFrameworks>
我的其他微服务是基于 .NET 7 构建的:
<TargetFramework>net7.0</TargetFramework>
在 Dockerfile 中,我需要将构建基础映像升级到 .NET 8 SDK 以修复构建错误:
FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build
但我的问题是:
如果我的微服务项目(Docker 的
ENTRYPOINT
)是在 .NET 7 上构建的,我可以(并且应该)将运行时映像更新到 .NET 8 吗?也许有一些安全原因?
FROM mcr.microsoft.com/dotnet/aspnet:7.0 AS base ---> :8.0
aspnet
图像的 .NET 版本应与项目的目标版本匹配。由于您的微服务面向 .NET 7,因此您的 aspnet
图像应保留 7.0
标签。不过,使用 .NET 8 SDK 是完全可以接受的,因为它能够构建(但不能运行)针对旧版本的项目。也就是说,如果您能够将项目升级到 .NET 8,那就更好地获得错误修复、改进的性能和功能的所有好处。