gpt4 book ai didi

microservices - Marathon:如何在 args 中指定环境变量

转载 作者:行者123 更新时间:2023-12-04 03:39:29 25 4
gpt4 key购买 nike

我正在尝试在我的每个 Mesos 从属节点上运行一个 Consul 容器。

有了 Marathon,我有以下 JSON 脚本:

{
"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"]
}

但是,马拉松似乎将 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 从属节点上启动一个 Consul 容器。


更新:

感谢@janisz 提供链接。

查看以下讨论后:

  • #3416 : marathon 文件中的 args 不解析环境变量

  • #2679 : 能够指定运行应用程序任务的主机名的值

  • #1328 : 通过 REST API 在配置中指定要在每个主机上使用的环境变量

  • #1828 : 在应用定义中支持更多变量和变量扩展

以及关于 Task Environment Variables 的马拉松文档.

我的理解是:

  • 目前无法在 args 中传递环境变量
  • 一些帖子指出可以在"cmd" 中传递环境变量。但是这些环境变量是 Marathon 提供的任务环境变量,而不是您主机上的环境变量。

如有错误请指正

最佳答案

你可以试试这个。

{
"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"
}
}

关于microservices - Marathon:如何在 args 中指定环境变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39020065/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com