在Docker容器中启动Windows服务

时间:2018-04-26 13:02:52

标签: docker dockerfile

我正在使用Docker for Windows,我正在尝试将Asp.NET MVC 5转换为容器。剩下的一个障碍是我需要运行ASPNET状态服务器。我可以通过交互式终端启动服务,它工作正常,但无法让容器自动启动服务。我尝试过使用CMD,ENTRYPOINT和RUN,但是从我收集到的内容中,其中一些只会在构建图像时执行命令,而不是在容器启动时执行。

我的DOCKERFILE如下

FROM microsoft/aspnet:4.7.1-windowsservercore-1709
ARG source
WORKDIR /inetpub/wwwroot
COPY ${source:-obj/Docker/publish} .
CMD powershell -Command \
Set-Service aspnet_state automatic; \
Start-Service -name "aspnet_state"; \

EXPOSE 1433

2 个答案:

答案 0 :(得分:2)

我没有使用CMD,而是使用RUN将命令提交到映像,并使用了多个RUN命令:

# Enable Session State Server
RUN powershell -Command Set-Service aspnet_state -startuptype automatic 
RUN powershell -Command Stop-Service aspnet_state
RUN powershell -Command Start-Service aspnet_state 
RUN powershell -Command Set-ItemProperty Registry::HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\aspnet_state\Parameters -Name  AllowRemoteConnection -Value 1 

答案 1 :(得分:0)

正确地installed the service into the image之后,您只需要以下代码。

ENTRYPOINT ["powershell"]
CMD Start-Service \""MyWindowsServiceName\"";

注意:Windows服务的名称可能不同于其可执行文件的名称。您需要此处的Windows服务名称,而不是可执行文件名称。