Попытка развертывания агента сборки teamcity на платформе Mesosphere Marathon и проблем с сопоставлениями портов.Установка номера порта агента сборки города в марафоне
По умолчанию сервер TeamCity попытается поговорить с Teamcity агентом по порту 9090
Therefor Я поставил контейнер порт так:
«containerPort»: 9090
Однако при развертывании контейнер агента teamcity, Marathon отображает порт 9090 в порт в диапазоне 30000.
Когда TeamCity сервер говорит обратно в контейнер на порту 9090 он не потому, что порт отображается на 30000.
Я понял, как получить этот динамический порт в файл конфигурации TeamCity, выполнив следующие действия СЕПГ команда в марафонских аргументах:
"args": ["sh", "-c", "sed -i -- \"s/ownPort=9090/ownPort=$PORT0/g\" buildAgent.properties; bin/agent.sh run"],
Когда контейнер раскручивается будет поменять ownPort = 9090 для ownPort = $ port0 в buildAgent.properties, а затем запустить агент.
Однако теперь, когда агент находится на порту 30000, «containerPort»: 9090 теперь недействителен, он должен быть «containerPort»: $ PORT0, однако это недопустимо json, поскольку containerPort должен быть целым числом.
Я пробовал настройку «containerPort»: 0, который должен динамически назначать порт, но с использованием этого значения я не могу заставить контейнер запускать его сразу же исчезает и продолжает пытаться его развернуть.
Я вхожу на Mesos ведомого хост и запустить докер п.с. -a я могу видеть порты контейнеров являются пустыми:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
28*********0 teamcityagent "\"sh -c 'sed -i -- 7 minutes ago Exited (137) 2 minutes ago mes************18a8
Это файл JSON Marathon Я использую и Marathon версия Version 0.8. 2:
{
"id": "teamcityagent",
"args": ["sh", "-c", "sed -i -- \"s/ownPort=9090/ownPort=$PORT0/g\" buildAgent.properties; bin/agent.sh run"],
"cpus": 0.05,
"mem": 4000.0,
"instances": 1,
"container":
{
"type": "DOCKER",
"docker":
{
"image": "teamcityagent",
"forcePullImage": true,
"network": "BRIDGE",
"portMappings":
[
{
"containerPort": 0,
"hostPort": 0,
"servicePort": 0,
"protocol": "tcp"
}
]
}
}
}
Любая помощь была бы принята с благодарностью!