按照标题,我想在dotnet框架的aspnet图像上使用dotnet核心。有一点背景知识,我有带dotnet核心库的ASP.NET(4.6)应用程序。当前它正在IIS上运行。现在,我期待通过使用Windows Server Core映像对此进行Docker化。没有特别的原因,只是希望对旧版应用程序进行Docker化和现代化。
我从这张图片开始: mcr.microsoft.com/dotnet/framework/sdk
我正在使用此映像作为运行时: mcr.microsoft.com/dotnet/framework/aspnet
问题是在运行时,aspnet内的IIS无法识别aspnetmodule。在IIS中,我们通常会安装主机捆绑包,如何在docker上做到这一点?
谢谢
答案 0 :(得分:0)
为了保持记录,正在分享此信息。我所做的是从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:主机捆绑包的安装有点棘手,我以前将扩展 图像,但以某种方式使安装变得短暂而丢失。这是 为我工作,希望这会有所帮助。
答案 1 :(得分:0)
在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"]