我跟随https://github.com/Microsoft/dotnet-framework-docker链接在.net 4.6.1框架的顶部构建了示例ASP.NET Web API应用程序。
这是我的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
脚本运行正常,我能够运行我的应用程序。
问题:
dotnet-framework:4.7.2-sdk
图像来构建&aspnet:4.7.2
图像来运行应用程序。我查看了aspnet镜像,它包含“Windows Server Core作为基本操作系统,IIS 10作为Web服务器,.NET Framework(有多个版本),. NET IIS的可扩展性”。在这种情况下,我还需要dotnet-framework:4.7.2-sdk
图片吗?最佳答案
首先,请注意,sdk基本镜像实际上没有包含在最终镜像中,只有运行时镜像包含在其中。 FROM
中有两条Dockerfile
行:
FROM microsoft/dotnet-framework:4.7.2-sdk AS build
...
FROM microsoft/aspnet:4.7.2 AS runtime
这将创建一个multi-stage build。只有第二(最后)阶段的基础镜像(即运行时镜像)将包括在镜像中。
对于.NET Framework本身之外的sdk镜像中包含的内容,请查看其Dockerfile,您会发现生产服务器上绝对不需要的一些内容,例如NuGet CLI,VS Test Agent等。
关于c# - 我可以进一步减少对由docker容器上的asp.net Web API应用程序运行的docker镜像的依赖性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53999565/