【问题标题】:How to use dotnet core on docker dotnet framework image如何在 docker dotnet 框架镜像上使用 dotnet core
【发布时间】:2020-03-10 01:10:36
【问题描述】:

根据标题,我想在 dotnet 框架 aspnet 图像上使用 dotnet core。一点背景知识,我有带有 dotnet 核心库的 ASP.NET (4.6) 应用程序。目前它在 IIS 上运行。现在,我期待通过使用 Windows Server 核心映像将其 dockerize。没有特别的原因,只是希望对遗留应用程序进行 docker 化和现代化。

  • 我从这张图片开始:mcr.microsoft.com/dotnet/framework/sdk

  • 我使用这个图像作为运行时:mcr.microsoft.com/dotnet/framework/aspnet

问题是在运行时,aspnet 中的 IIS 无法识别 aspnetmodule。在 IIS 中我们通常安装托管包,如何在 docker 上执行此操作?

谢谢

【问题讨论】:

    标签: asp.net docker asp.net-core docker-for-windows


    【解决方案1】:

    只是为了记录,我分享这个。我所做的是从 Microsoft 获取图像并添加 Hosting bundle 的安装。在这种情况下,我使用的是 dotnet core 1.1:

    # escape=`
    ARG REPO=mcr.microsoft.com/dotnet/framework/runtime
    FROM $REPO:4.8-windowsservercore-ltsc2019
    
    SHELL ["powershell", "-Command", "$ErrorActionPreference = 'Stop'; $ProgressPreference = 'SilentlyContinue';"]
    
    ADD dotnetcore.1.0.16_1.1.13-windowshosting.exe /install/
    RUN Add-WindowsFeature Web-Server; `
        Add-WindowsFeature NET-Framework-45-ASPNET; `
        Add-WindowsFeature Web-Asp-Net45; `
        Remove-Item -Recurse C:\inetpub\wwwroot\*; `
        Invoke-WebRequest -Uri https://dotnetbinaries.blob.core.windows.net/servicemonitor/2.0.1.6/ServiceMonitor.exe -OutFile C:\ServiceMonitor.exe
    
    # Install Roslyn compilers and ngen binaries
    RUN Invoke-WebRequest https://api.nuget.org/packages/microsoft.net.compilers.2.9.0.nupkg -OutFile c:\microsoft.net.compilers.2.9.0.zip; `
        Expand-Archive -Path c:\microsoft.net.compilers.2.9.0.zip -DestinationPath c:\RoslynCompilers; `
        Remove-Item c:\microsoft.net.compilers.2.9.0.zip -Force; `
        &C:\install\dotnetcore.1.0.16_1.1.13-windowshosting.exe /install /quiet | `
        &C:\Windows\Microsoft.NET\Framework64\v4.0.30319\ngen.exe install c:\RoslynCompilers\tools\csc.exe /ExeConfig:c:\RoslynCompilers\tools\csc.exe | `
        &C:\Windows\Microsoft.NET\Framework64\v4.0.30319\ngen.exe install c:\RoslynCompilers\tools\vbc.exe /ExeConfig:c:\RoslynCompilers\tools\vbc.exe | `
        &C:\Windows\Microsoft.NET\Framework64\v4.0.30319\ngen.exe install c:\RoslynCompilers\tools\VBCSCompiler.exe /ExeConfig:c:\RoslynCompilers\tools\VBCSCompiler.exe | `
        &C:\Windows\Microsoft.NET\Framework\v4.0.30319\ngen.exe install c:\RoslynCompilers\tools\csc.exe /ExeConfig:c:\RoslynCompilers\tools\csc.exe | `
        &C:\Windows\Microsoft.NET\Framework\v4.0.30319\ngen.exe install c:\RoslynCompilers\tools\vbc.exe /ExeConfig:c:\RoslynCompilers\tools\vbc.exe | `
        &C:\Windows\Microsoft.NET\Framework\v4.0.30319\ngen.exe install c:\RoslynCompilers\tools\VBCSCompiler.exe  /ExeConfig:c:\RoslynCompilers\tools\VBCSCompiler.exe
    
    ENV ROSLYN_COMPILER_LOCATION c:\\RoslynCompilers\\tools
    
    EXPOSE 80
    
    ENTRYPOINT ["C:\\ServiceMonitor.exe", "w3svc"]
    

    我无法自动下载托管捆绑包。您可能需要从 microsoft 站点下载它:https://dotnet.microsoft.com/download/dotnet-core/2.2,选择运行时和托管包。

    将其与 Dockerfile 放在一起,以便 Docker 可以将其复制到映像中。此镜像可以在 Windows Server 2019 上运行。对于其他版本的 Windows Server,您可能需要使用不同的标签。

    P/S: Hosting bundle 安装有点麻烦,我以前是扩展 图像,但不知何故,安装变得短暂而丢失。这是 为我工作,希望这会有所帮助。

    【讨论】:

      【解决方案2】:

      在这里https://dotnet.microsoft.com/download/dotnet-core找到你需要的.NET Core SDK的下载链接。

      这是 .NET Core 2.2 的示例

      FROM mcr.microsoft.com/dotnet/framework/runtime:4.7.2 AS runtime
      
      # Replace download URL with .NET Core SDK you need.
      ADD https://download.visualstudio.microsoft.com/download/pr/7ae62589-2bc1-412d-a653-5336cff54194/b573c4b135280fb369e671a8f477163a/dotnet-sdk-2.2.100-win-x64.exe c:/setup
      
      RUN C:/setup/dotnet-sdk-2.2.100-win-x64.exe /install /quiet
      
      ENTRYPOINT ["dotnet", "YOUR_NET_CORE_DLL_NAME.dll"]
      

      【讨论】:

        猜你喜欢
        • 2019-07-09
        • 1970-01-01
        • 2021-06-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多