我有一个.NET Core 2.1控制台应用程序.我想在Docker镜像中运行此控制台应用程序.我是Docker的新手,只是想弄清楚.
这时,我有一个Dockerfile,它的灵感来自Microsoft’s Example.我的文件实际上是这样的:
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镜像,获取代码,并在图像本身上构建控制台应用程序.任何帮助表示赞赏.
最佳答案 这个问题更多的不是码头本身,而是.net docker图像
您可以在特定图像中找到https://hub.docker.com/r/microsoft/dotnet/点击查找Dockerfile并了解该图像中的软件构建内容,并找出不同Dockerfile之间的区别
关于第二个问题,更好地“构建一个docker镜像,获取代码,并在图像本身上构建控制台应用程序.”因此,您构建映像,公开端口,将代码作为卷安装,并在容器中安装软件的帮助下在容器内执行代码