Docker ENTRYPOINT变量未结转到CMD中

前端之家收集整理的这篇文章主要介绍了Docker ENTRYPOINT变量未结转到CMD中 前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我有一个基本映像,它在ENTRYPOINT shell脚本docker-entry.sh中导出了许多变量.

现在,我使用基本映像并通过mongo-entry.sh运行CMD.我希望在mongo-entry.sh中访问从ENTRYPOINT导出的变量.

我可以看到输出了docker-entry.sh中变量的日志语句,但是我无法在mongo-entry.sh中访问它

我已经尝试在我的DockerFile中将docker-entry.sh和mongo-entry.sh称为ENTRYPOINT

码:

基本映像ENTRYPOINT docker-entry.sh

 export var1 = "var1"

当前图像

FROM 'baseimage'
COPY ["mongo-entry.sh"]
CMD ["mongo-entry.sh"]

mongo-entry.sh

echo "var1=$VAR1"

乌普图

var1=
最佳答案
我怀疑有1-2个问题:

> ENTRYPOINT和CMD不是从FROM图像继承的
>您可能正在使用ENTRYPOINT | CMD的exec形式

ENTRYPOINT和CMD有两种形式,即shell和exec形式. exec形式“不调用命令外壳”,因此您将不会获得环境变量处理:

https://docs.docker.com/engine/reference/builder/#cmd

这是显示通过FROM’d图像传递的ENV值的示例:

echo '
FROM bash
ENV DOG=Freddie
ENTRYPOINT echo "dog=${DOG}"
' | docker build --tag=1st --file=- .
echo '
FROM 1st
ENV CAT=Emmett
ENTRYPOINT echo "dog=${DOG}" "cat=${CAT}"
' | docker build --tag=2nd --file=- .
docker run 1st
docker run 2nd

结果是:

dog=Freddie
dog=Freddie cat=Emmett

注意:${DOG}(及其值)是从1st继承的

猜你在找的Docker相关文章