代码之家  ›  专栏  ›  技术社区  ›  OpenStack

我是否可以进一步减少对docker容器上asp.net web api应用程序运行的docker映像的依赖性

  •  1
  • OpenStack  · 技术社区  · 6 年前

    我跟着 https://github.com/Microsoft/dotnet-framework-docker 链接以生成我的示例ASP.NET Web API应用程序build on top on.NET 4.6.1 framework。

    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 要构建的图像(&A); aspnet:4.7.2 运行应用程序的图像。我查看了aspnet映像,它包含“Windows Server Core作为基本操作系统,iis10作为Web服务器,.NET Framework(多个版本可用),.NET Extensibility for IIS”。在这种情况下我还需要吗 网络-framework:4.7.2-sdk 图像?

      enter image description here

    2. 我不认为脚本使用IIS作为web服务器。如何使用IIS托管此应用程序?

    1 回复  |  直到 6 年前
        1
  •  0
  •   Max    6 年前

    首先,请注意,sdk基本映像实际上并不包含在最终映像中,只有运行时映像才包含在最终映像中。有两个 FROM 在您的 Dockerfile :

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

    这将创建一个 multi-stage build . 只有第二(最后)阶段的基本映像(即运行时映像)将包含在映像中。

    对于sdk映像中除了.NET框架本身之外包含的内容,请查看其 Dockerfile 您将发现一些在生产服务器上肯定不需要的东西,例如NuGet CLI、VS Test Agent等。