当前位置: 首页 > 知识库问答 >
问题:

如何在Dockerfile cmd中使用变量?

秦鹏飞
2023-03-14

在我的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,它将创建项目...

共有1个答案

方焱
2023-03-14

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

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

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

  • 无变量展开
  • 没有通配符展开
  • 不使用><等进行I/O重定向
  • 通过命令1没有多个命令;命令2
  • 以此类推。

如果希望cmd展开变量,则需要安排一个shell。您可以这样做:

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

或者您可以使用简单的字符串而不是执行列表,这将得到一个与上一个示例基本相同的结果:

CMD django-admin startproject $PROJECTNAME
 类似资料:
  • 问题内容: 我听说我们可以在CSS中声明/定义变量,并将其像全局变量一样使用: 所以有人知道如何使用它们吗? 问题答案: 为此,您需要使用CSS动态语言的 Less 或 Sass。

  • 问题内容: Maven有一个功能,我在package.json中非常想念。在maven .pom文件中,您可以在父项目中定义变量,并在子项目的pom文件中使用它们。 npm中有类似的东西吗?我们正在构建模块化项目,我想集中定义依赖项版本,并在相应的package.json文件中使用它们。 谢谢 问题答案: 可以引用任何键,对于您所下的每个级别,都可以开头并添加下划线。 例: 名称可以像这样访问:或

  • 问题内容: 我需要在Hibernate中使用带有变量的本地SQL查询。 但是hibernate抛出错误信息:参数前缀后不允许有空格 因此,与:= mysql变量分配和hibernate变量分配存在冲突。 这是我的SQL查询: hibernate代码(jpa语法): 我无法使用存储过程,因为我的SQL查询是动态生成的(“ Level”可以是“ int”或“ force” …) 我怎样才能做到这一点

  • 问题内容: 在我的Dockerfile中: 错误: 最快的解决方法是什么?Docker是否有计划“修复”或在更高版本的Docker中引入此功能? 注意:如果我从Docker文件中删除CMD行,然后运行Docker容器,则能够从容器内部手动运行Django-admin startproject $ PROJECTNAME,它将创建项目… 问题答案: 当您使用执行列表时,如… …然后Docker将 直

  • 我想在单击按钮时打印我的产品详细信息。 我有两个字典Watchs和TV 这里是我的javascript代码,在此我使用函数打印字典的值,并使用保存字典的名称。但当我编写时,输出是未定义的。 但当我单击“手表”按钮和时,它会将输出作为手表给我,或者单击“电视”按钮和时,它会将输出作为电视给我。 那么为什么不起作用。 null null

  • 问题内容: 我想根据用户选择的值导入一些软件包。 默认值为: 如果用户选择,则应为: 在PHP中,我可以使用变量variable来做到这一点: 如何在Python中执行此操作? 问题答案: Python没有与PHP的“变量变量”直接等效的功能。要获取“变量变量”的值(或任何其他表达式的值),可以使用该函数。 但是,这不能在语句中使用。 可以使用该函数通过变量导入。 相当于