我正在尝试使用 .net 4.5 在 Server 2016 CTP5 上构建基于 Windows 容器的微服务。
在非容器世界中,我使用的是作为 Windows 服务部署的控制台应用程序,它订阅队列并执行其工作。
在容器中,我可以运行控制台应用程序,它似乎运行良好。是否需要将其安装为 Windows 服务?
最佳答案
不,您不想将其安装为服务。当您在容器中运行应用程序时,Docker 会监控容器中的事件进程。如果事件进程停止,则容器退出。所以你应该在前台运行你的应用程序,让 Docker 将容器放在后台(通过使用 docker run -d
启动它)。
一个异常(exception)是现有平台已经是 Windows 服务 - 例如。 microsoft/iis图片。 IIS 在容器的后台运行,因此您需要启动另一个进程来保持容器运行 - 这就是为什么您会看到 IIS 容器是这样启动的:
docker run -d -p 80:80 microsoft/iis ping -t localhost
ping
命令保持容器运行,而 IIS 服务实际响应请求。但这并不理想,Docker 正在监视 ping
,因此如果 IIS 服务停止,容器将继续运行。
关于docker - Windows 容器中的控制台应用程序或 Windows 服务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39705529/