需要帮助将遗留应用程序Docker化
我有一个包含多个组件(msi安装程序)的遗留应用程序。这些组件使用各种技术,如C#,Windows窗体,C++,MFC,.net remoting和C# Web服务(asmx)。其中有一些组件是桌面UI应用程序。
我正在研究将这些组件Docker化的可行性。我知道无法从Docker容器中显示UI,但是UI组件也有命令行对应项,可以使用它来执行所有可以在UI中完成的操作。
我从一个简单组件开始。这个组件包含由C#开发的asmx Web服务,通常托管在Windows机器上的IIS上。
它将其文件安装到以下位置
- C:\program Files\ ==> 可配置
- C:\programData\
我使用以下操作创建了docker文件
- 获取Windows Server Core映像并启用IIS和其他依赖项
- 将安装程序从主机机器复制到容器
- 使用msiexec命令以静默模式运行安装程序。
当我使用此Docker文件运行docker build命令时,我收到了一个错误信息:无法访问网络位置"C:\Program Files\\
谷歌没有提供任何帮助。 有人能帮我解决这个问题吗? 我有几个问题 1. Docker容器默认包含像Program Files、Program Files(x86)、User Profile、Program data和App data这样的默认Windows目录吗?
编辑: 抱歉回复延迟。 提供以下docker文件:
FROM microsoft/aspnet
WORKDIR C:\\Installers
COPY EKBCS.exe C:\\Installers\\myinstaller.exe
COPY EKBCS.properties C:\\Installers\\myinstaller.properties
#RUN msiexec /unreg
#RUN msiexec /regserver
#RUN ["net start", "msiserver"]
RUN ["myinstaller.exe", "/l*v myinstaller.log", "/qn PROPERTYFILE=myinstaller.properties"]
ENTRYPOINT ["powershell"]
以下是安装程序日志中的错误。
-- 错误 1719。无法访问Windows Installer服务。这可能是因为您正在安全模式下运行Windows,或者Windows Installer未正确安装。联系您的支持人员寻求帮助。
我尝试注销并注册msi安装程序服务,但没有帮助。因此,我注释了那些行。非常感谢任何帮助。
windowsservercore
镜像已经包含了 Program Files、Program Files(x86) 和其他目录。您可以通过在使用命令docker run -it microsoft/windowsservercore:latest
直接创建的容器上运行dir
命令来查找更多内容。 - KatariaA