如果我设置一个环境变量,比如ENV ADDRESSEE = world,并且我想在入口点脚本中使用它,连接成一个固定的字符串,如:
ENTRYPOINT ["./greeting","--message","Hello,world!"]
世界是环境变数的价值,我该如何做?我尝试使用“你好,$ADDRESSEE”但似乎不起作用,因为它需要$ADDRESSEE字面上.
最佳答案
你使用的是ENTRYPOINT的exec形式.与shell窗体不同,exec窗体不调用命令shell.这意味着不会发生正常的shell处理.例如,ENTRYPOINT [“echo”,“$HOME”]不会在$HOME上执行变量替换.如果你需要shell处理,那么可以使用shell窗体或直接执行shell,例如:ENTRYPOINT [“sh”,“-c”,“echo”,“$HOME”].
当使用exec表单并直接执行一个shell时,就像shell表单一样,它是正在执行环境变量扩展的shell,而不是docker(从Dockerfile reference开始)
当使用exec表单并直接执行一个shell时,就像shell表单一样,它是正在执行环境变量扩展的shell,而不是docker(从Dockerfile reference开始)
在你的情况下,我将使用shell形式
ENTRYPOINT ./greeting --message "Hello,$ADDRESSEE\!"