【发布时间】:2021-08-31 12:20:59
【问题描述】:
我正在尝试对隔离进程 .net5.0 Azure 函数进行 dockerize。但我遇到了错误。我所有的项目都针对net5.0。我的 Dockerfile 看起来像这样:
FROM mcr.microsoft.com/azure-functions/dotnet-isolated:3.0-dotnet-isolated5.0-core-tools AS build
WORKDIR /app
COPY . ./
RUN dotnet publish My.Functions -c Release -o out -r linux-x64
FROM mcr.microsoft.com/azure-functions/dotnet-isolated:3.0
ENV AzureWebJobsScriptRoot=/home/site/wwwroot
ENV AzureFunctionsJobHost__Logging__Console__IsEnabled=true
ENV FUNCTIONS_WORKER_RUNTIME=dotnet-isolated
COPY --from=build /app/out /home/site/wwwroot
我得到的错误是:
找不到任何兼容的框架版本 [/tmp/sek2ugeb.quv/WorkerExtensions.csproj] /root/.nuget/packages/microsoft.net.sdk.functions/3.0.11/build/Microsoft.NET.Sdk.Functions.Build.targets(32,5): 错误:框架'Microsoft.NETCore.App',版本'3.1.0'不是 成立。 [/tmp/sek2ugeb.quv/WorkerExtensions.csproj]
为什么它甚至尝试使用.net3.1?
我能做些什么来解决它?
【问题讨论】:
-
当你仔细观察时,你可以看到
dotnet-isolated:3.0所以它尝试 dotnet 3 是合乎逻辑的。看起来,你找到了构建过程的图像,但在 @987654321 上列出的图像@ 受到更多限制。 -
@b2f 构建失败...不幸的是我们没有进入启动阶段
-
当我们查看Dockerhub 时,您的第一行仍然是
dotnet-isolated:3.0-isolated5.0-core-tools,然后单击Dockerfile 的指定链接。您可以看到 .net core 3.1 sdk 的来源。也许你可以先用 net5.0 sdk 构建然后使用它。您的两个图像都使用了 dotnet/runtime:5.0 基础图像。 -
也许你可以尝试使用Dockerfile中的命令安装依赖项。
标签: .net azure docker azure-functions .net-5