如果SAMPLE_VALUE在 ecs 任務定義中定義了一個環境變數,像這樣
{
"containerDefinitions": [
{
"command": [
"./app"
],
"image": "sample-image:latest",
"name": "sample-app",
"environment": [
{
"name": "SAMPLE_VALUE",
"value": "ABC"
}
]
}
]
}
SAMPLE_VALUE如果在 Dockerfile 中再次定義相同的環境變數,sample-image就像這樣
...
...
ENTRYPOINT ["run.sh", "app"]
的內容run.sh是
#!/bin/sh
export SAMPLE_VALUE=XYZ
exec $1
app將從變數中獲得什么值SAMPLE_VALUE?會是XYZ還是ABC?
uj5u.com熱心網友回復:
這里的優先級是:
ENV默認情況下將使用 Dockerfile 中的宣告。- 啟動容器時的環境變數設定,包括您顯示的 ECS 設定(還有
docker run -eComposeenvironment:、 Kubernetesenv:)覆寫影像的ENV. - 主容器行程自己設定的任何環境變數都將覆寫這兩者。
因此,在您的示例中,主容器行程是run.sh,它忽略了環境中以前的任何內容并設定了$SAMPLE_VALUE自己;當它exec是實際命令時,它會看到SAMPLE_VALUE=xyz.
您可以通過列印出先前的值來進一步說明這一點:
#!/bin/sh
echo "SAMPLE_VALUE was ${SAMPLE_VALUE}"
export SAMPLE_VALUE=xyz
exec "$@"
這將列印出ABCECS 定義中設定的值,然后運行實際程式并將值設定為xyz。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/449532.html
標籤:亚马逊网络服务 码头工人 dockerfile 亚马逊-ecs ecs-任务定义
下一篇:P1030
