我正在尝试使用.net 4.5在Server 2016 CTP5上构建基于Windows容器的微服务.
在非容器世界中,我使用部署为Windows服务的控制台应用程序来订阅队列并完成其工作.
在一个容器中,我可以运行控制台应用程序,它似乎运行得很好.是否需要将其安装为Windows服务?
最佳答案
不,您不希望将其安装为服务.在容器中运行应用程序时,Docker会监视容器中的活动进程.如果活动进程停止,则容器退出.因此,您应该在前台运行您的应用程序,并让Docker将容器放在后台(通过使用docker run -d启动它).
一个例外是现有平台已经是Windows服务 – 例如microsoft/iis图像. IIS正在容器的后台运行,因此您需要启动另一个进程来保持容器运行 – 这就是为什么您看到IIS容器启动如下:
docker run -d -p 80:80 microsoft/iis ping -t localhost
ping命令使容器保持运行,而IIS服务实际响应请求.但这并不理想,Docker正在监视ping,因此如果IIS服务停止,容器会继续运行.