[英]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.