当前位置: 首页 > 面试题库 >

如何在ENTRYPOINT数组中使用Docker环境变量?

曹钊
2023-03-14
问题内容

如果设置了环境变量,请说ENV ADDRESSEE=world,然后在连接到固定字符串的入口点脚本中使用它,例如:

ENTRYPOINT ["./greeting", "--message", "Hello, world!"]

world作为环境varible的价值,我该怎么办呢?我尝试使用,"Hello, $ADDRESSEE"但这似乎不起作用,因为它$ADDRESSEE确实是正确的。


问题答案:

您正在使用ENTRYPOINT 的 exec形式 。与 shell表单 不同, exec表单
不会调用命令shell。这意味着正常的外壳处理不会发生。例如,ENTRYPOINT [ "echo", "$HOME" ]将不会在$
HOME上进行变量替换。如果要进行shell处理,则可以使用 shell形式 或直接执行shell,例如:ENTRYPOINT [ "sh", "-c", "echo $HOME" ]
当使用exec表单并直接执行shell时(例如在shell表单中),是由shell进行环境变量扩展,而不是docker。(来自Dockerfile参考)


在你的情况下,我会使用 外壳形式

ENTRYPOINT ./greeting --message "Hello, $ADDRESSEE\!"


 类似资料:
  • 我希望能够在docker-compose.yml中使用env变量,这些变量的值是在时传入的。这就是例子。 我今天用基本的docker run命令来完成这个任务,它被包装在我自己的脚本中。有没有一种方法可以用compose来实现它,而不需要任何这样的bash包装器?

  • 我希望能够在docker compose中使用env变量。yml,值在docker compose up时传入。这就是一个例子。 我今天用基本的docker run命令来做这件事,它包含在我自己的脚本中。有没有一种方法可以在没有任何bash包装器的情况下用compose实现它?

  • 问题内容: 我希望能够在docker-compose.yml中使用env变量,并在docker-compose时传入值。这就是例子。我今天使用基本的docker run命令来执行此操作,该命令包装在我自己的脚本中。没有任何这样的bash包装器,有没有办法通过compose实现它? 问题答案: 创建一个,这是您的with环境变量。 假设您的环境变量在文件“ env.sh”中 将以下代码放入sh文件中

  • 卷值不允许附加属性('${VOLUME_NAME}‘意外) 任何帮助都将不胜感激。

  • 问题内容: 是否可以重用在多个容器之间共享的环境变量以避免重复,如本示例所示: 问题答案: 该选项可能是好的,但它不支持在撰写文件。其他走的方式是: 扩展名字段(撰写文件3.4+) 如果可以使用3.4+组成文件,则扩展名字段可能是最佳选择: docker-compose.yml env_file指令 docker-compose.yml variables.env * 项目根目录中的 *.env

  • 当我用它以以下错误停止: 我不是舒尔,但似乎。env文件不支持变量的使用。