gpt4 book ai didi

amazon-web-services - 在 ECS 中运行 etcd 容器所需的入口点/命令是什么?

转载 作者:行者123 更新时间:2023-12-04 08:17:44 24 4
gpt4 key购买 nike

到目前为止,我尝试了所有的入口点和命令,但都收到了“没有这样的文件或目录”的错误。我需要:1) 使用对 AWS 的特殊 curl 请求为 HostIP 设置环境变量2) 运行 etcd 容器,为其提供使用 $HostIP 的参数

它似乎需要一个字符串数组,但我不确定它是如何工作的。我认为命令是:

/bin/sh -c "export export HostIP=$(curl -s 169.254.169.254/latest/meta-data/local-ipv4)"

etcd -advertise-client-urls http://${HostIP}:2379,http://${HostIP}:4001
-other-similar-args...

但我需要将它们更改为逗号分隔。

1) 如何转义逗号/引号?2)我是否需要使用逗号并为每个空格开始一个新字符串?3) 有人有工作示例吗???

更新:我制作了一个带有 entrypoint.sh 的自定义容器,其中包含:

 #!/bin/sh export HOST=$(curl -s 169.254.169.254/latest/meta-data/local-hostname) export HostIP=$(curl -s 169.254.169.254/latest/meta-data/local-ipv4)

/usr/local/bin/etcd -name etcd0 \ -advertise-client-urls
http://${HostIP}:2379,http://${HostIP}:4001 \ -listen-client-urls
http://0.0.0.0:2379,http://0.0.0.0:4001 \
-initial-advertise-peer-urls http://${HostIP}:2380 \ -listen-peer-urls http://0.0.0.0:2380 \ -initial-cluster-token etcd-cluster-1 \ -initial-cluster etcd0=http://${HostIP}:2380 \
-initial-cluster-state new

现在的问题是容器启动但使用 localhost 而不是 0.0.0.0 或我们使用 curl 从 AWS 获取的 IP。它似乎遇到了某种错误并回退到本地主机。

最佳答案

当从 ECS 仪表板命令行运行任务时,参数需要用逗号分隔,但请记住,传递给 sh -c 的整个字符串是子 shell 解释的单个参数.

换句话说,您的任务定义应如下所示:

/bin/sh,-c,export HostIP=$(curl -s 169.254.169.254/latest/meta-data/local-ipv4) && etcd ...

但是,如果您可以控制图像,那么您可以考虑编写一个封装所有这些的自定义 ENTRYPOINT 脚本。

关于amazon-web-services - 在 ECS 中运行 etcd 容器所需的入口点/命令是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44210440/

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