是否可以在不安装整个SDK的情况下在Docker中运行.net单元测试(xunit或其他)?
我想拥有一个最小的Docker映像,该映像将专门用于运行测试。
答案 0 :(得分:3)
不。运行测试需要SDK。但是,可以使用图层从最终图像中删除此依赖性。例如,如果您的最终目标是仅拥有正在运行的应用程序,但是您想在运行容器之前先在容器中构建和测试,则可以执行以下操作:
FROM mcr.microsoft.com/dotnet/core/sdk:2.2 AS build-env
# do your build, test, publish
FROM mcr.microsoft.com/dotnet/core/aspnet:2.2
# copy published files from build-env
最后,您的映像将仅引用ASP.NET Core运行时,而不是SDK。但是,应该注意的是,这将首先在创建映像时运行测试,而不是在每次容器运行时都运行。不过,这实际上应该足够了,因为如果在构建过程中通过了测试,则最终映像中的已发布应用程序也将正常运行。确实不需要一遍又一遍地进行测试。但是,如果您想要一个完全用于测试的映像,则需要构建SDK映像。