Привет, у меня есть dockerfile ниже для консольного приложения .NET 6.
FROM mcr.microsoft.com/dotnet/runtime:6.0 AS base
WORKDIR /app
FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build
WORKDIR /src
COPY ["MyProj/MyProj.csproj", "MyProj/"]
RUN dotnet restore "MyProj/MyProj.csproj"
COPY . .
WORKDIR "/src/MyProj"
RUN dotnet build "MyProj.csproj" -c Release -o /app/build
FROM build AS publish
RUN dotnet publish "MyProj.csproj" -c Release -o /app/publish /p:UseAppHost=false
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "MyProj.dll"]
Я использую инструмент CI действий github для создания образа и развертывания его в kubernets. Я не получаю никаких ошибок при сборке, но когда изображение запускается, я получаю сообщение об ошибке ниже
You must install or update .NET to run this application.
App: /app/AL.AlphaLinerJob.dll
Architecture: x64
Framework: 'Microsoft.AspNetCore.App', version '6.0.0' (x64)
.NET location: /usr/share/dotnet/
No frameworks were found.
Learn about framework resolution:
https://aka.ms/dotnet/app-launch-failed
To install missing framework, download:
https://aka.ms/dotnet-core-applaunch?framework=Microsoft.AspNetCore.App&framework_version=6.0.0&arch=x64&rid=debian.11-x64
Ниже приведены пакеты csproj.
<ItemGroup>
<PackageReference Include = "Microsoft.Extensions.Configuration" Version = "7.0.0" />
<PackageReference Include = "Microsoft.Extensions.Configuration.Abstractions" Version = "7.0.0" />
<PackageReference Include = "Microsoft.Extensions.Configuration.EnvironmentVariables" Version = "7.0.0" />
<PackageReference Include = "Microsoft.Extensions.Configuration.FileExtensions" Version = "7.0.0" />
<PackageReference Include = "Microsoft.Extensions.Configuration.Json" Version = "7.0.0" />
<PackageReference Include = "Microsoft.Extensions.Configuration.UserSecrets" Version = "5.0.0" />
<PackageReference Include = "Microsoft.Extensions.DependencyInjection" Version = "7.0.0" />
<PackageReference Include = "Microsoft.VisualStudio.Azure.Containers.Tools.Targets" Version = "1.17.0" />
<PackageReference Include = "Npgsql" Version = "7.0.2" />
<PackageReference Include = "OpenTelemetry" Version = "1.3.0-rc.2" />
<PackageReference Include = "OpenTelemetry.Exporter.Console" Version = "1.1.0" />
<PackageReference Include = "OpenTelemetry.Exporter.OpenTelemetryProtocol" Version = "1.1.0" />
<PackageReference Include = "OpenTelemetry.Exporter.Prometheus" Version = "1.3.0-rc.2" />
<PackageReference Include = "OpenTelemetry.Extensions.Hosting" Version = "1.0.0-rc9" />
<PackageReference Include = "prometheus-net" Version = "7.0.0" />
<PackageReference Include = "prometheus-net.AspNetCore" Version = "7.0.0" />
<PackageReference Include = "Npgsql" Version = "7.0.2" />
Я не могу найти первопричину этого. Несколько дней назад он работал нормально. Он внезапно начал выдавать эту ошибку. Может ли кто-нибудь помочь мне найти первопричину. Любая помощь будет оценена по достоинству.
Я ожидаю успешного запуска образа.





Похоже, что один из пакетов зависит от наличия среды выполнения ASP.NET Core (prometheus-net.AspNetCore будет основным кандидатом на основе <FrameworkReference Include="Microsoft.AspNetCore.App" /> в csproj).
Либо измените base на FROM mcr.microsoft.com/dotnet/aspnet:6.0, либо найдите «виновный» пакет и удалите его.
Возможно актуально - Не найден фреймворк "Microsoft.AspNetCore.App", версия "6.0.0" (x64)
Изменить 1-ю строку:FROM mcr.microsoft.com/dotnet/runtime:6.0 AS base
чтобыFROM mcr.microsoft.com/dotnet/aspnet:6.0 AS base
сработало большое спасибо. потратил почти неделю, чтобы понять это
Вам нужен образ докера asp.net core runtime: hub.docker.com/_/microsoft-dotnet-aspnet