gpt4 book ai didi

docker - 如何在 Dockerfile CMD 中使用变量?

转载 作者:IT老高 更新时间:2023-10-28 12:34:13 26 4
gpt4 key购买 nike

在我的 Dockerfile 中:

ENV PROJECTNAME mytestwebsite
CMD ["django-admin", "startproject", "$PROJECTNAME"]

错误:

CommandError: '$PROJECTNAME' is not a valid project name

这里最快的解决方法是什么? Docker 是否有计划在更高版本的 Docker 中“修复”或引入此功能?

注意:如果我从 Docker 文件中删除 CMD 行,然后运行 ​​Docker 容器,我可以从容器内部手动运行 Django-admin startproject $PROJECTNAME 并创建项目...

最佳答案

当您使用执行列表时,如...

CMD ["django-admin", "startproject", "$PROJECTNAME"]

...那么 Docker 将直接执行给定的命令,而不涉及 shell。由于不涉及 shell,这意味着:

  • 无变量扩展
  • 没有通配符扩展
  • 不使用 > 进行 i/o 重定向, < , |
  • command1; command2 没有多个命令
  • 等等。

如果你想要你的 CMD要扩展变量,您需要安排一个外壳。你可以这样做:

CMD ["sh", "-c", "django-admin startproject $PROJECTNAME"]

或者你可以使用一个简单的字符串而不是一个执行列表,它得到的结果与前面的例子大致相同:

CMD django-admin startproject $PROJECTNAME

关于docker - 如何在 Dockerfile CMD 中使用变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40454470/

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