c# - 找不到任何已安装的.NET Core SDK

标签 c# docker asp.net-core .net-core

我正在尝试为我的示例ASP.NET Core 3.1应用构建一个Docker镜像并运行一个容器,并且看到

It was not possible to find any installed .NET Core SDKs



当我运行命令时
docker run --rm -it -p 8000:80 ppi
我的Dockerfile很简单:
FROM mcr.microsoft.com/dotnet/core/aspnet:3.1
COPY publish/ ./
ENTRYPOINT ["dotnet", "sampleapp.dll"]

并且我正在将我的应用程序预先构建到publish文件夹中。我的文件夹结构如下所示:
root/
  source/
    SampleApp.csproj
    appsettings.json
    Startup.cs
    Program.cs
  publish/
    SampleApp.dll
    SampleApp.exe
    appsettings.json
    SampleApp.deps.json
    SampleApp.runtimeconfig.json
    web.config
  Dockerfile
  SampleApp.sln

我使用以下命令创建了图像
docker build -t ppi
我的示例应用程序没有问题,因为我可以使用以下命令在本地启动它
dotnet publish/sampleapp.dll
我在这里想念什么?我一直在研究以下教程:
  • Building .NET Docker Images
  • dotnet-docket/samples/aspnetapp
  • 最佳答案

    简要答案:
    该图像mcr.microsoft.com/dotnet/core/aspnet:3.1是.NET运行时。
    建议的创建docker镜像的方法是将代码复制到dotnet sdk镜像内。
    并在docker镜像中触发所有构建命令。
    一旦完成。您只将发布文件夹复制到一个dotnet运行时镜像(您正在使用的那个)。
    如果您使用的是Visual Studio;使用添加Docker支持选项来生成Dockerfile。一切都应像魅力一样运作。
    该错误消息有点晦涩难懂,因为并不是所有的文件都可以运行该应用程序。
    您的Dockerfile应该如下所示:

    FROM mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim AS base
    WORKDIR /app
    EXPOSE 80
    
    FROM mcr.microsoft.com/dotnet/core/sdk:3.1-buster AS build
    WORKDIR /src
    COPY ["myaspnetapp.csproj", ""]
    RUN dotnet restore "./myaspnetapp.csproj"
    COPY . .
    WORKDIR "/src/."
    RUN dotnet build "myaspnetapp.csproj" -c Release -o /app/build
    
    FROM build AS publish
    RUN dotnet publish "myaspnetapp.csproj" -c Release -o /app/publish
    
    FROM base AS final
    WORKDIR /app
    COPY --from=publish /app/publish .
    ENTRYPOINT ["dotnet", "myaspnetapp.dll"]
    

    关于c# - 找不到任何已安装的.NET Core SDK,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60842092/

    相关文章:

    c# - 线程优先级(如何获得固定顺序)

    c# - 在 CentOS/Linux 上正确配置 dotnet (ASP.NET Core 2.1) 环境

    c# - 使用自定义中间件 Asp.Net-Core 添加响应 header

    java - 清除内存中的图像流

    C# 使用具有相同值的多个键打开枚举

    c# - 使用 Xamarin.Forms 中的 View 模型属性绑定(bind)到 StaticResource?

    ASP.NET Core 2.1 API 缓存

    docker - 通过网络链接的外部容器的别名

    docker - LINKERD:无法从linkerd构建docker镜像

    docker - Docker设置-在本地运行Chaincode时遇到问题