Windows-Worker-Service 在 docker-container 中保持状态直到 1053

Windows-Worker-Service stays in status starting until 1053 in docker-container

我开发了一个 Windows-worker 服务,我想在基于 docker 的环境中启动它以进行自动化测试。因此,我使用以下命令构建它:

dotnet publish -r win-x64 -c Release /p:PublishSingleFile=true

此外,我还有以下 Dockerfile:

 FROM mcr.microsoft.com/windows/servercore/insider:10.0.17763.107
 COPY ["Install/", "C:/Service/Name/"]
    
 RUN powershell New-Service -Name "Name" -BinaryPathName "C:\Service\Name\Name.exe"

当尝试使用 Start-Service -Name "Name" 启动服务时,启动时间很长并且服务保持在启动状态,然后我在事件日志 (LogName=System) 中收到 1053 错误。

由于服务没有启动我又做了一个,主要是基于Visual Studio中的模板,所以它应该只在事件日志中记录一条消息。此服务具有相同的行为。在我的本地机器上安装它时一切正常。

您知道为什么服务仍然处于启动状态,即使它已经完成了 运行 状态的任务吗?

我现在解决了这个问题,因为我发现了以下问题:https://github.com/dotnet/runtime/issues/50020

UseWindowsService() 在 Docker 中不起作用,所以我必须指定 WindowsServiceLifetime:

services.AddSingleton<IHostLifetime, WindowsServiceLifetime>();