Могу ли я дополнительно уменьшить зависимость от образов докера для запуска приложением asp.net web api в контейнере докера - PullRequest
0 голосов
/ 02 января 2019

Я перешел по ссылке https://github.com/Microsoft/dotnet-framework-docker, чтобы создать мой пример сборки приложения ASP.NET Web API поверх платформы .net 4.6.1.

Вот мой файл Docker:

FROM microsoft/dotnet-framework:4.7.2-sdk AS build
WORKDIR /app

# copy csproj and restore as distinct layers
COPY *.sln .
COPY TestWebAPI/*.csproj ./TestWebAPI/
COPY TestWebAPI/*.config ./TestWebAPI/
RUN nuget restore

# copy everything else and build app
COPY TestWebAPI/. ./TestWebAPI/
WORKDIR /app/TestWebAPI
RUN msbuild /p:Configuration=Release


FROM microsoft/aspnet:4.7.2 AS runtime
WORKDIR /inetpub/wwwroot
COPY --from=build /app/TestWebAPI/. ./

Чтобы запустить скрипт, я выполнил следующие команды:

docker image build --tag testwebapi --file .\Dockerfile .

docker container run --detach --publish 80 testwebapi

Скриптработает нормально, и я могу запустить свое приложение.

Вопросы:

  1. Я использую dotnet-framework:4.7.2-sdk изображение для сборки& aspnet:4.7.2 образ для запуска приложения.Я посмотрел на образ aspnet, и он содержит «Windows Server Core в качестве базовой ОС, IIS 10 в качестве веб-сервера, .NET Framework (доступно несколько версий), .NET Extensibility for IIS».В этом случае мне все еще нужно dotnet-framework:4.7.2-sdk изображение?

    enter image description here

  2. Я не думаю, что скрипт использует IIS каквеб-сервер.Как я могу использовать IIS для размещения этого приложения?

1 Ответ

0 голосов
/ 02 января 2019

Во-первых, обратите внимание, что базовый образ SDK на самом деле не включен в ваш окончательный образ, а только образ времени выполнения.В вашем Dockerfile есть две FROM строки:

FROM microsoft/dotnet-framework:4.7.2-sdk AS build
...
FROM microsoft/aspnet:4.7.2 AS runtime

Это создает многоступенчатую сборку .Только базовый образ второго (последнего) этапа, который является образом времени выполнения, будет включен в ваш образ.

Для того, что включено в образ sdk за пределами .NET Framework, посмотрите на его Dockerfile и вы обнаружите несколько вещей, которые вам определенно не понадобятся на ваших производственных серверах, таких как NuGet CLI, VS Test Agent и т. Д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...