Se houver uma variável de ambiente SAMPLE_VALUE
definida na definição da tarefa ecs assim
{
"containerDefinitions": [
{
"command": [
"./app"
],
"image": "sample-image:latest",
"name": "sample-app",
"environment": [
{
"name": "SAMPLE_VALUE",
"value": "ABC"
}
]
}
]
}
Se a mesma variável de ambiente SAMPLE_VALUE
for definida novamente dentro do Dockerfile da sample-image
mesma forma
...
...
ENTRYPOINT ["run.sh", "app"]
O conteúdo run.sh
é
#!/bin/sh
export SAMPLE_VALUE=XYZ
exec $1
Que valor obteria app
da variável SAMPLE_VALUE
? Seria XYZ
ou ABC
?
A prioridade aqui seria:
ENV
declarações no Dockerfile serão usadas por padrão.docker run -e
, Compose environment:
, Kubernetes env:
) substituem a configuração ENV
.Então, no seu exemplo, o processo do contêiner principal é run.sh
, e isso ignora o que estava anteriormente no ambiente e $SAMPLE_VALUE
se define; quando for exec
o comando real, ele verá SAMPLE_VALUE=xyz
.
Você pode ilustrar isso um pouco mais imprimindo o valor anterior:
#!/bin/sh
echo "SAMPLE_VALUE was ${SAMPLE_VALUE}"
export SAMPLE_VALUE=xyz
exec "$@"
Isso imprimirá o ABC
valor definido na definição do ECS, mas, em seguida, executará o programa real com o valor definido como xyz
.
Este artigo é coletado da Internet.
Se houver alguma infração, entre em [email protected] Delete.
deixe-me dizer algumas palavras