Я попытался создать изображение Docker из своего клиентского приложения Blazor. Приложение обслуживается проектом ASP. NET Core WebAPI.
Для этой цели я позволяю VS сгенерировать соответствующий Dockerfile.
FROM mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443
FROM mcr.microsoft.com/dotnet/core/sdk:3.1-buster AS build
WORKDIR /src
COPY ["Gtv.Blazor/Server/Gtv.Blazor.Server.csproj", "Gtv.Blazor/Server/"]
COPY ["Blazor/Shared/Gtv.Blazor.Shared.csproj", "Gtv.Blazor/Shared/"]
COPY ["Gtv.Blazor/Client/Gtv.Blazor.Client.csproj", "Gtv.Blazor/Client/"]
RUN dotnet restore "Gtv.Blazor/Server/Gtv.Blazor.Server.csproj"
COPY . .
WORKDIR "/src/Gtv.Blazor/Server"
RUN dotnet build "Gtv.Blazor.Server.csproj" -c Release -o /app/build
FROM build AS publish
RUN dotnet publish "Gtv.Blazor.Server.csproj" -c Release -o /app/publish
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "Gtv.Blazor.Server.dll"]
При сборке я получаю компоновщик IL ошибка:
Step 12/21 : RUN dotnet restore "Gtv.Blazor/Server/Gtv.Blazor.Server.csproj"
---> Using cache
---> 40fd2064543b
Step 13/21 : COPY . .
---> Using cache
---> 027a267a84ca
Step 14/21 : WORKDIR "/src/Gtv.Blazor/Server"
---> Using cache
---> 20349fa5c602
Step 15/21 : RUN dotnet build "Gtv.Blazor.Server.csproj" -c Release -o /app/build
---> Running in d1134f6e3d48
Microsoft (R) Build Engine version 16.4.0+e901037fe for .NET Core
Copyright (C) Microsoft Corporation. All rights reserved.
Restore completed in 28.71 ms for /src/Gtv.Blazor/Client/Gtv.Blazor.Client.csproj.
Restore completed in 28.69 ms for /src/Gtv.Blazor/Server/Gtv.Blazor.Server.csproj.
Restore completed in 1.02 ms for /src/Gtv.Blazor/Shared/Gtv.Blazor.Shared.csproj.
Gtv.Blazor.Shared -> /app/build/Gtv.Blazor.Shared.dll
Fatal error in Mono IL Linker
/root/.nuget/packages/microsoft.aspnetcore.components.webassembly.build/3.2.1/targets/Blazor.MonoRuntime.targets(326,5): error : Unhandled exception. Mono.Cecil.AssemblyResolutionException: Failed to resolve assembly: 'obj/Release/netstandard2.1/Gtv.Blazor.Client.dll, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null' [/src/Gtv.Blazor/Client/Gtv.Blazor.Client.csproj]
---> Mono.Cecil.AssemblyResolutionException: Failed to resolve assembly: 'obj/Release/netstandard2.1/Gtv.Blazor.Client.dll, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null'
at Mono.Cecil.BaseAssemblyResolver.Resolve(AssemblyNameReference name, ReaderParameters parameters)
at Mono.Linker.AssemblyResolver.Resolve(AssemblyNameReference name, ReaderParameters parameters)
at Mono.Linker.LinkContext.Resolve(IMetadataScope scope)
at Mono.Linker.LinkContext.Resolve(IMetadataScope scope)
at Mono.Linker.LinkContext.Resolve(String name)
at Mono.Linker.Steps.ResolveFromAssemblyStep.Process()
at Mono.Linker.Steps.BaseStep.Process(LinkContext context)
at Mono.Linker.Pipeline.ProcessStep(LinkContext context, IStep step)
at Mono.Linker.Pipeline.Process(LinkContext context)
at Mono.Linker.Driver.Run(ILogger customLogger)
at Mono.Linker.Driver.Execute(String[] args, ILogger customLogger)
at Mono.Linker.Driver.Main(String[] args)
/root/.nuget/packages/microsoft.aspnetcore.components.webassembly.build/3.2.1/targets/Blazor.MonoRuntime.targets(326,5): error : ILLink failed with exit code 134. [/src/Gtv.Blazor/Client/Gtv.Blazor.Client.csproj]
Build FAILED.
/root/.nuget/packages/microsoft.aspnetcore.components.webassembly.build/3.2.1/targets/Blazor.MonoRuntime.targets(326,5): error : Unhandled exception. Mono.Cecil.AssemblyResolutionException: Failed to resolve assembly: 'obj/Release/netstandard2.1/Gtv.Blazor.Client.dll, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null' [/src/Gtv.Blazor/Client/Gtv.Blazor.Client.csproj]
/root/.nuget/packages/microsoft.aspnetcore.components.webassembly.build/3.2.1/targets/Blazor.MonoRuntime.targets(326,5): error : ILLink failed with exit code 134. [/src/Gtv.Blazor/Client/Gtv.Blazor.Client.csproj]
0 Warning(s)
2 Error(s)