Я уже понял это. Visual Studio использует многостадийную сборку Docker при создании файла Docker, поэтому, когда он создает образ Docker, в конце он использует образ aspnetcore
, который является последней сборкой этапа, объявленной в файле Docker, и он использует стадию base
, которая на самом деле является aspnetcore
изображением. Это пример:
FROM microsoft/aspnetcore:2.0.5 AS base
WORKDIR /app
EXPOSE 80
FROM microsoft/aspnetcore-build:2.0.5-2.1.4 AS build
WORKDIR /src
COPY . .
RUN dotnet restore -nowarn:msb3202,nu1503
WORKDIR /src/src/Services/Catalog/Catalog.API
RUN dotnet build --no-restore -c Release -o /app
FROM build AS publish
RUN dotnet publish --no-restore -c Release -o /app
FROM base AS final
WORKDIR /app
COPY --from=publish /app .
ENTRYPOINT ["dotnet", "Catalog.API.dll"]
Итак, рекомендуемый способ построения и публикации образа Docker - это наш процесс CI / CD, а не вручную.