2016-10-17 6 views
1

У меня есть приложение, которое развертывается через Marathon нескольких аналогичных серверов (в контейнерах Docker контейнеров), с использованием Marathon автоматического присвоения функции «порта». Это хорошо и хорошо, как мне нужно в моем приложении.Получить динамически assgined IP/порт из Марафона в контейнерах

Проблема заключается в том, что мои серверы, развернутые в Марафоне (PyWPS), используют код, который не очень хорошо сочетается с современной распределенной архитектурой. PyWPS-запросы для определения в статическом файле конфигурации, IP и Port для опроса из клиентских приложений.

Когда у меня есть статические IP/порты в моих контейнерах, легко запустить сценарий (внутри контейнера) при запуске контейнера, который 'sed' конфигурационный файл, чтобы поместить правильные значения IP/порта из ENVVAR, который я установил в командной строке запуска контейнера.

Проблема возникает, когда дело доходит до использования недетерминированного динамического IP/порта. Есть ли способ поймать эту информацию в контейнере, когда он развернут марафоном, как вид событие «container_start» hook?

ответ

2

Если я правильно вас понимаю, это должно быть легко разрешимо аналогично тому, как вы описали.

Например, если вы запустите приложение с HOST сетей и случайного порта (путем указания "ports": [0], например), то Marathon будет установить переменные окружения $HOST и $PORT0. Вам не нужно устанавливать что-то подобное в ручном режиме.

Затем, чтобы ваш сценарий точки входа управлял конфигурацией на основе этих двух переменных окружения, и вы должны иметь полностью динамический параметр ip/port.

+0

Спасибо Тоби за твое мнение. Я, наконец, исправил код моего сервера, поскольку в моем случае он был более простым. но ваше решение будет работать. – matt

+0

@matt Можете ли вы немного объяснить? Каким образом вы применили патч? – Tobi

+0

[Здесь] (http://gis.stackexchange.com/questions/214454/dynamic-ips-for-polling-and-results-requests-using-pywps) - это способ, которым я заплатил PyWPS, чтобы получить желаемое поведение – matt