设置团队城市建设代理港口号在马拉松

rseugnpd  于 2021-06-21  发布在  Mesos
关注(0)|答案(1)|浏览(295)

试图在mesosphere marathon平台上部署teamcity构建代理,但在端口Map方面遇到问题。
默认情况下,teamcity服务器将尝试与端口9090上的teamcity代理通话
因此,我将集装箱港口设置为:
“集装箱港口”:9090
但是,当我部署teamcity代理容器时,marathon会将端口9090Map到30000范围内的端口。
当teamcity服务器与端口9090上的容器通信时,由于端口Map到30000,因此失败。
我已经知道如何通过在marathon args中运行以下sed命令将这个动态端口放入teamcity配置文件:

"args": ["sh", "-c", "sed -i -- \"s/ownPort=9090/ownPort=$PORT0/g\" buildAgent.properties; bin/agent.sh run"],

当容器启动时,它将在buildagent.properties中用ownport=9090替换ownport=$port0,然后启动代理。
但是,现在代理位于端口30000上,“containerport”:9090现在无效,它应该是“containerport”:$port0但是这是无效的json,因为containerport应该是一个整数。
我试过设置“containerport”:0,它应该动态地分配一个端口,但是使用这个值我无法让容器启动它,它会立即消失并继续尝试部署它。
我登录到mesos从属主机并运行docker ps-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

这是我正在使用的marathon json文件,marathon版本是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"
                }
            ]
        }
    }

}

任何帮助都将不胜感激!

mwyxok5s

mwyxok5s1#

从marathon版本0.8.2升级到marathon版本0.9.0解决了这个问题,使用设置“containerport”:0,现在可以正确地动态设置端口,容器启动,teamcity服务器现在可以与其通信。

相关问题