如何在Dockerfile CMD中使用变量?

在我的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。由于不涉及任何外壳,这意味着:

  • 无变量扩展
  • 没有通配符扩展
  • 没有I / O重定向功能><|
  • 没有多个命令通过 command1; command2
  • 依此类推。

如果要CMD扩展变量,则需要安排一个shell。您可以这样做:

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

或者,您可以使用简单的字符串而不是执行列表,这将使您得到的结果与前面的示例大致相同:

CMD django-admin startproject $PROJECTNAME

以上是 如何在Dockerfile CMD中使用变量? 的全部内容, 来源链接: utcz.com/qa/434476.html

回到顶部