我有一个基本映像,它在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继承的