gpt4 book ai didi

Docker ENTRYPOINT 变量未转入 CMD

转载 作者:行者123 更新时间:2023-12-02 00:53:40 25 4
gpt4 key购买 nike

我有一个基础镜像,它在它的 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 个问题:

  1. ENTRYPOINTCMD 不是从 FROM 图像继承的
  2. 您可能正在使用 ENTRYPOINT|CMD
  3. 的执行形式

ENTRYPOINTCMD有两种形式,shell和exec形式。 exec 形式“不调用命令 shell”,因此您不会得到环境变量处理:

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

这是一个示例,显示了 ENV 值通过 FROM 的图像传递:

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

NB ${DOG}(及其值)继承自 1st

关于Docker ENTRYPOINT 变量未转入 CMD,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55988590/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com