我正在尝试创建一个Docker映像来托管依赖于Crystal Reports的asp.net MVC应用程序。
我的dockerfile看起来像这样
FROM microsoft/iis
COPY ./bin/Release/Publish/ c:\\inetpub\\wwwroot
RUN ["powershell.exe", "Install-WindowsFeature NET-Framework-45-ASPNET"]
RUN ["powershell.exe", "Install-WindowsFeature Web-Asp-Net45"]
#install Crystal reports runtime
COPY Resources/Files/CRRuntime_64bit_13_0_21.msi .
RUN powershell.exe -Command Start-Process CRRuntime_64bit_13_0_21.msi -ArgumentList '/quiet' -Wait
CRRuntime_64bit_13_0_21.msi安装失败。我登录到我的容器并从powershell运行了msi安装并生成了日志。它很长,但是有两点很突出:
错误1904。.NET Framework 4.0 \ Common \ SAP BusinessObjects Enterprise XI 4.0 \ win64_x64 \ pageobjectmodel.dll的模块C:\ Program Files(x86)\ SAP BusinessObjects \ Crystal Reports无法注册。 HRESULT -2147024770。请与您的支持人员联系。 动作结束17:20:50:InstallFinalize。返回值3。
操作已结束17:23:56:安装。返回值3。 MSI(3C:54)[17:23:56:467]:产品:用于.NET Framework(64位)的SAP Crystal Reports运行时引擎-安装操作失败。 MSI(s)(3C:54)[17:23:56:467]:Windows Installer安装了该产品。产品名称:适用于.NET Framework(64位)的SAP Crystal Reports运行时引擎。产品版本:13.0.21.2533。产品语言:1033。制造商:SAP。安装成功或错误状态:1603。
第一个错误似乎并未阻止安装。
欢迎提出任何有关此问题的疑难解答建议,以及其他创建映像的方法。
还要确认一下。该网站加载并正常运行。我只是不能使用任何需要Crystal Reports依赖项的功能。
答案 0 :(得分:2)
使用完整的Windows 2019容器mcr.microsoft.com\windows:1809
作为基础,安装程序将运行,这表明它只是缺少操作系统组件而已。
我没有记录“错误1904”,但也许我在其他主机操作系统上。
安装程序日志显示自定义操作 SetASPDotNetDllPath 失败。
如果您:
dumpbin
)这显示了对oledlg.dll
的依赖。
这是服务器核心中唯一不存在的依赖项。
这不是很好,但是您可以从完整的Windows容器中复制此版本以对其进行修复:
FROM mcr.microsoft.com/windows:1809 as dll_source
FROM microsoft/iis
#hack in oledlg dll!!
COPY --from=dll_source /windows/system32/oledlg.dll /windows/system32/oledlg.dll
COPY --from=dll_source /windows/syswow64/oledlg.dll /windows/syswow64/oledlg.dll
RUN ["powershell.exe", "Install-WindowsFeature NET-Framework-45-ASPNET"]
RUN ["powershell.exe", "Install-WindowsFeature Web-Asp-Net45"]
WORKDIR c:/temp
COPY CRRuntime_64bit_13_0_21.msi .
RUN powershell.exe -Command Start-Process c:\temp\CRRuntime_64bit_13_0_21.msi -ArgumentList '/l*v c:\temp\install.log' -Wait
答案 1 :(得分:0)
我将添加一个附加答案,而Peters答案对于安装Crystal Reports来说是完美的,而从Crystal Report导出为PDF时,我还有一个字体丢失的问题。
这就是我最终得到的。关键是将图像标签名称更改为较旧的版本。
#windowsservercore-1803 required as it has the fonts we need in the report in order to export to PDF
FROM microsoft/iis:windowsservercore-1803
#install features we need
RUN ["powershell.exe", "Install-WindowsFeature NET-Framework-45-ASPNET"]
RUN ["powershell.exe", "Install-WindowsFeature Web-Asp-Net45"]
#hack in oledlg dll so that Crystal Runtime will install
COPY Resources/Files/64/oledlg.dll /windows/syswow64/oledlg.dll
COPY Resources/Files/32/oledlg.dll /windows/system32/oledlg.dll
#copy in Crystal MSI and install. Note it's 64bit version
WORKDIR c:/temp
COPY Resources/Files/CRRuntime_64bit_13_0_21.msi .
RUN powershell.exe -Command Start-Process c:\temp\CRRuntime_64bit_13_0_21.msi -ArgumentList '/quiet /l*v c:\temp\install64.log' -Wait
#Add website files
COPY ./bin/Release/Publish/ /inetpub/wwwroot
出于某种原因,Microsoft从1803版本到1809版本删除了很多字体。我只能假定减小OS图像的大小。