我正在尝试使 Finalbuilder(FBCMD.exe)在 Windows Docker容器中运行。在我的服务器上,有一个 Jenkins主服务器,该主机使用Docker容器作为从服务器。作为构建步骤,我想通过 FBCMD.exe 在容器内启动 FB8项目(我知道虚拟化所需的许可证,获得了站点许可证)。
我在容器内安装了 /VERYSILENT
的 FB8 。 Docker容器具有 .NET Framework> 4.5 和 Powershell版本5.xx。,并且许可证密钥位于正确的路径中:“ C:\ Program Data…” < / p>
但是,每次我尝试在容器内运行FBCMD.exe时,它绝对不会执行任何操作。相同的命令在我的台式机上也可以使用。
我没有使用Dockerfile。我创建容器的方式如下:
使用了“ mcr.microsoft.com/windows/servercore 1”图像并启动了一个容器
给容器一个卷,以轻松地将文件从我的主机(Win Server 2016)复制到容器。
检查过的Powershell和.net Framework版本
将FB8安装程序复制到容器中
通过“ .\FB800… /VERYSILENT
”安装并检查“…Program Files(x86)”中是否存在文件
将许可证密钥从主机移至“ C:\ Program Data \ VSoft ...”
停止容器并使用“ docker commit”命令创建新图像
使用最近创建的图像启动一个新容器,并尝试启动FBCMD.exe
这就是我被困住的地方。与上述步骤并行,我安装了Java,并将agent.jar复制到了容器中。它们在新创建的图像中正常工作。
有人知道如何解决此问题吗?还是可以正常工作?
答案 0 :(得分:0)
不幸的是,当在容器中运行时(甚至在没有Desktop Experience的服务器核心上运行),您将无法获得有关失败加载依赖项的相同信息,例如VC ++运行时dll,DirectX。
并非所有依赖项都以相同的方式加载,根据应用程序的不同,您可能可以使用应用程序中的日志记录选项Get-EventLog
或sxstrace
来捕获依赖项错误。
如果您已经设法将其安装在任意计算机上,即您的容器主机,则可能会遇到如下问题:
1809
mcr.microsoft.com/windows:<TAG>
创建一个docker容器,复制上述文件并测试脚本mcr.microsoft.com/windows/servercore:<TAG>
,以确认该应用是否需要servercore没有的某些依赖项nanoserver
。