Итак, я наткнулся на эту же проблему и довел меня до безумия.Решение здесь состоит в том, чтобы пропустить сборку и перейти прямо к публикации.
Мне помог этот образец: https://github.com/dotnet/dotnet-docker/blob/master/samples/aspnetapp/Dockerfile.alpine-x64
Как вы видите, сборки не происходит.Существует восстановление, а затем публикация.Почему нет сборки?Я не знаю.Я расследую, но я рад, что это сработало для меня, по крайней мере.Дайте мне знать, как это происходит.
Отредактировано для дополнительной информации:
Вот оригинальный нерабочий файл Dockerfile:
FROM microsoft/dotnet:2.2-aspnetcore-runtime-nanoserver-1809 AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443
FROM microsoft/dotnet:2.2-sdk-nanoserver-1809 AS build
WORKDIR /src
COPY ["mercurynorth_netcore/mercurynorth_netcore.csproj", "mercurynorth_netcore/"]
RUN dotnet restore "mercurynorth_netcore/mercurynorth_netcore.csproj"
COPY . .
WORKDIR "/src/mercurynorth_netcore"
RUN dotnet build "mercurynorth_netcore.csproj" -c Release -o /app
FROM build AS publish
RUN dotnet publish "mercurynorth_netcore.csproj" -c Release -o /app
FROM base AS final
WORKDIR /app
COPY --from=publish /app .
ENTRYPOINT ["dotnet", "mercurynorth_netcore.dll"]
... и вот недавнорабочий Dockerfile:
FROM mcr.microsoft.com/dotnet/core/sdk:2.2-alpine AS build
WORKDIR /app
# Lets do a restore of the NuGet packages, and then restore the app in a container.
COPY mercurynorth_netcore.csproj ./
RUN dotnet restore "mercurynorth_netcore.csproj"
COPY . .
RUN dotnet publish "mercurynorth_netcore.csproj" -c Release -o /app
FROM mcr.microsoft.com/dotnet/core/aspnet:2.2 AS final
WORKDIR /app
EXPOSE 80
EXPOSE 443
COPY --from=build /app .
ENTRYPOINT ["dotnet", "mercurynorth_netcore.dll"]
Как вы можете видеть, я обычно удалял строку:
RUN dotnet build "mercurynorth_netcore.csproj" -c Release -o /app
... а также выполнял некоторую очистку.
Общий вывод заключается в том, что выполнение команды build на моих машинах и разработчиках будет работать нормально, но как часть сборки контейнера это не удастся.