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继承的

相关文章

最近一直在开发Apworks框架的案例代码,同时也在一起修复Apw...
最近每天都在空闲时间努力编写Apworks框架的案例代码WeText。...
在《Kubernetes中分布式存储Rook-Ceph部署快速演练》文章中,...
最近在项目中有涉及到Kubernetes的分布式存储部分的内容,也...
CentOS下Docker与.netcore(一) 之 安装 CentOS下Docker与.ne...
CentOS下Docker与.netcore(一) 之 安装 CentOS下Docker与.ne...