Windows服务shutsdown在泊坞窗容器启动后立即

问题描述 投票:1回答:1

我已经写在C#ServiceBase继承的窗口服务。我曾尝试在容器安装服务(也运行作为控制台应用程序),但它在守护进程模式几秒钟后关闭。如果我运行它interatively(-it),那么它保持运行。 OnStop叫,但我不能确定什么是守护进程模式调用它。

我曾与平运行,以保持容器活着:

docker run -d --name myapptest myapp ping -t localhost

搬运工文件:

FROM microsoft/dotnet-framework
SHELL ["powershell.exe", "-Command", "$ErrorActionPreference = 'Stop'; 
$ProgressPreference = 'Continue'; $verbosePreference='Continue';"]

RUN net user /add appuser Password1234!
RUN net localgroup administrators appuser /add

RUN New-Item -Path "C:/app" -ItemType directory

WORKDIR /app

COPY ".\hostcode" "C:\app"

RUN "C:/Windows/Microsoft.NET/Framework64/v4.0.30319/InstallUtil.exe" 
/username=.\appuser /password=Password1234! /LogToConsole=true /ShowCallStack myapp.exe
RUN SC.exe config MyApp start=auto

CMD POWERSHELL Write-Host Starting container... ; \
while ($true) { Start-Sleep -Seconds 3600 }
c# docker windows-services docker-for-windows docker-desktop
1个回答
0
投票

我想你可能有一个关于RUNCMDENTRYPOINT误解。 This article解释它舒服,所以检查出来。

试着改变你的搬运工文件:

RUN SC.exe config MyApp start=auto

CMD POWERSHELL Write-Host Starting container... ; \
while ($true) { Start-Sleep -Seconds 3600 }

ENTRYPOINT POWERSHELL Write-Host Starting container... && \
           SC.exe config MyApp start=auto

我猜你把无限循环,以保持容器还活着,但真的没有必要,所以我拿出来。

© www.soinside.com 2019 - 2024. All rights reserved.