我有一个 .NET Core 2.1 控制台应用程序。我想在 Docker 镜像中运行这个控制台应用程序。我对 Docker 还很新,正在努力弄清楚它的使用。
目前,我有一个 Dockerfile,它受到 微软示例 的启发。我的文件实际上看起来像这样:
FROM microsoft/dotnet:2.1-runtime-nanoserver-1709 AS base
WORKDIR /app
FROM microsoft/dotnet:2.1-sdk-nanoserver-1709 AS build
WORKDIR /src
COPY MyConsoleApp/MyConsoleApp.csproj MyConsoleApp/
RUN dotnet restore MyConsoleApp/MyConsoleApp.csproj
COPY . .
WORKDIR /src/MyConsoleApp
RUN dotnet build MyConsoleApp.csproj -c Release -o /app
FROM build AS publish
RUN dotnet publish MyConsoleApp.csproj -c Release -o /app
FROM base AS final
WORKDIR /app
COPY --from=publish /app .
ENTRYPOINT ["dotnet", "MyConsoleApp.exe"]
我的问题是:microsoft/dotnet:2.1-runtime-nanoserver-1709、microsoft/dotnet:2.1-sdk和microsoft/dotnet:2.1-runtime之间有什么区别?对于我的.NET 2.1控制台应用程序,我应该使用哪一个?我不确定是a)构建我的控制台应用程序然后部署到Docker镜像还是b)构建一个Docker镜像,获取代码并在镜像本身上构建控制台应用程序。感谢任何帮助。