Microservices Marathon:如何在args中指定环境变量
我正在尝试在我的每个Mesos从属节点上运行一个领事容器 对于Marathon,我有以下JSON脚本:Microservices Marathon:如何在args中指定环境变量,microservices,mesos,marathon,consul,Microservices,Mesos,Marathon,Consul,我正在尝试在我的每个Mesos从属节点上运行一个领事容器 对于Marathon,我有以下JSON脚本: { "id": "consul-agent", "instances": 10, "constraints": [["hostname", "UNIQUE"]], "container": { "type": "DOCKER", "docker": { "image": "consul",
{
"id": "consul-agent",
"instances": 10,
"constraints": [["hostname", "UNIQUE"]],
"container": {
"type": "DOCKER",
"docker": {
"image": "consul",
"privileged": true,
"network": "HOST"
}
},
"args": ["agent","-bind","$MESOS_SLAVE_IP","-retry-join","$MESOS_MASTER_IP"]
}
然而,marathon似乎将args
视为纯文本
这就是我总是出错的原因:
==> Starting Consul agent...
==> Error starting agent: Failed to start Consul client: Failed to start lan serf: Failed to create memberlist: Failed to parse advertise address!
因此,我只是想知道是否有任何解决方法,以便我可以在我的每个Mesos从属节点上启动一个领事容器
更新: 谢谢@janisz的链接 在查看以下讨论之后:
- :marathon文件中的参数不解析环境变量
- :能够指定运行应用程序任务的主机名的值
- :在配置中指定要通过REST API在每个主机上使用的环境变量
- :在应用程序定义中支持更多变量和变量扩展
- 目前无法在args中传递环境变量
- 一些帖子指出可以在
中传递环境变量。但是这些环境变量是Marathon提供的任务环境变量,而不是主机上的环境变量“cmd”
{
"id": "consul-agent",
"instances": 10,
"constraints": [["hostname", "UNIQUE"]],
"container": {
"type": "DOCKER",
"docker": {
"image": "consul",
"privileged": true,
"network": "HOST",
"parameters": [
"key": "env",
"value": "YOUR_ENV_VAR=VALUE"
]
}
}
}
或
我认为这个问题与
{
"id": "consul-agent",
"instances": 10,
"constraints": [["hostname", "UNIQUE"]],
"container": {
"type": "DOCKER",
"docker": {
"image": "consul",
"privileged": true,
"network": "HOST"
}
},
"env": {
"ENV_NAME" : "VALUE"
}
}