簡體   English   中英

在ECS中運行etcd容器所需的入口點/命令是什么?

[英]What is the entry point/command required to run an etcd container in ECS?

有了我到目前為止嘗試的所有入口點和命令,我收到此錯誤“沒有這樣的文件或目錄。” 我需要:1)使用對AWS的特殊curl請求為HostIP設置一個env變量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或我們使用來自AWS的curl獲取的IP。 它似乎遭受了某種錯誤,並回退到localhost。

從ECS儀表板命令行運行任務時,參數需要用逗號分隔,但請記住,傳遞給sh -c的整個字符串是由子shell解釋的單個參數。

換句話說,您的任務定義應如下所示:

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

但是,如果您可以控制圖像,那么您可以考慮編寫一個封裝所有這些內容的自定義ENTRYPOINT腳本。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM