2016-09-26 5 views
4

Я пытаюсь создать микросервис на базе Windows Container на сервере 2016 CTP5 с использованием .net 4.5.Консольное приложение или служба Windows в контейнере Windows?

В неконтейнерном мире я использую консольное приложение, развернутое как Служба Windows, который подписывается на очередь и выполняет свою работу.

В контейнере я могу запустить консольное приложение, и, похоже, оно работает нормально. Нужно ли устанавливать его в качестве службы Windows?

+0

Если он работает нормально, нет необходимости устанавливать его в качестве службы Windows. Это касается всего. –

+0

Возможно, вам следует описать, какие у вас требования? И как это относится к вашему приложению, работающему как служба. Также stackoverflow может быть не для этого. Вы должны отправить свой более полный вопрос на http://superuser.com/tour. –

+0

Я думаю, я думал, что я выразил то, что было моим требованием. Я использую микросервис в качестве традиционной службы Windows на традиционном сервере Windows (2012). Я пытаюсь переместить его в контейнер Windows. – TalMcMahon

ответ

8

Нет, вы не хотите устанавливать его как услугу. Когда вы запускаете приложение в контейнере, 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 перестает работать, контейнер продолжает работать.

+0

Великий это то, что я чувствовал, но нужно было нюхать его. – TalMcMahon

+1

Как примечание стороны: в текущем изображении microsoft/iis точкой входа по умолчанию является «C: \ ServiceMonitor.exe w3svc», и если вы запустите это изображение без каких-либо параметров, этот ServiceMonitor будет продолжать работать. Так что, даже если это не «способ пойти» с Docker для использования служб Windows, это может быть обходным путем, если это действительно необходимо. – Tobias

Смежные вопросы